我的编程空间,编程开发者的网络收藏夹
学习永远不晚

uniapp使用canvas+手势缩放

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

uniapp使用canvas+手势缩放

功能介绍,工程类app,需要在手机端查看图纸,canvas绘制点,线。整理随意放大缩小。

  1. canvas绘制方法

//画布image            drawImage(ctx, path, x, y, dWidth, dHeight) {                ctx.drawImage(path, x, y, dWidth, dHeight)            },            //圆角矩形            roundNode(ctx, x, y, width, height, radius, color) {                //圆角矩形部分                ctx.beginPath()                if (width < 2 * radius) radius = width / 2;                if (height < 2 * radius) radius = height / 2;                ctx.moveTo(x + radius, y);                ctx.arcTo(x + width, y, x + width, y + height, radius);                ctx.arcTo(x + width, y + height, x, y + height, radius);                ctx.arcTo(x, y + height, x, y, radius);                ctx.arcTo(x, y, x + width, y, radius);                ctx.setFillStyle(color)                ctx.fill()            },            //绘制三角形  type:箭头朝向:bottom、right、left            drawTriangle(ctx, x, y, color, type) {                ctx.beginPath()                let height = 10 //计算等边三角形的高                ctx.moveTo(x, y); //x y开始                 switch (type) {                    case 'bottom':                        ctx.lineTo(x - height / 2, y)                        ctx.lineTo(x, y + height)                        ctx.moveTo(x, y)                        ctx.lineTo(x + height / 2, y)                        ctx.lineTo(x, y + height)                        break;                    case 'left':                        ctx.lineTo(x, y - height / 2)                        ctx.lineTo(x - height, y)                        ctx.moveTo(x, y)                        ctx.lineTo(x, y + height / 2)                        ctx.lineTo(x - height, y)                        break;                    case 'right':                        ctx.lineTo(x, y - height / 2)                        ctx.lineTo(x + height, y)                        ctx.moveTo(x, y)                        ctx.lineTo(x, y + height / 2)                        ctx.lineTo(x + height, y)                        break;                    default:                        break;                }                  ctx.setFillStyle(color)                ctx.fill();            },            drawText(ctx, text, x, y, color, size) {                //文字部分                ctx.beginPath()                ctx.setTextAlign('center')                ctx.setFillStyle(color)                ctx.setFontSize(size)                const metrics = ctx.measureText(text)                //文字统一偏移                ctx.fillText(text, x + metrics.width / 2, y + 17)            },            // 绘制带箭头线 type:箭头朝向:bottom、right、left            drawLine(ctx, fromX, fromY, toX, toY, color, type, isArrow = true, isDash = false) {                ctx.beginPath()                if (isDash) {                    ctx.setLineDash([10]);                } else {                    ctx.setLineDash([]);                }                ctx.moveTo(fromX, fromY)                ctx.lineTo(toX, toY)                ctx.setLineWidth(1)                ctx.setStrokeStyle(color)                ctx.stroke()    //是否绘制箭头                if (isArrow) {                    this.drawTriangle(ctx, toX, toY, color, type)                }            },
  1. 手势缩放 拖拽功能实现

                                        

movable-view + movable-area 实现该功能

windowWidth、windowHeight 是计算屏幕占比 如果需要多设备可以参考

widths、heights 动态movable-view宽高 (我这里图纸太大需要一定缩放,并且movable-view内容最好跟movable-view宽高相同)

//开始绘制that.context = uni.createCanvasContext('myCanvas')//画背景            that.drawImage(that.context,that.infos.pic, 0, 0,that.widths, that.heights)            //画节点            //开始节点           this.roundNode(this.context, 553, 38, 100, 36, 26, '#1EC1C3')            this.node.push({                x:553,                y:38,                w:100,                h:36,                targe:0            })                        that.context.draw()
//s缩放比例scaleChange(e) {    this.scale = e.detail.scale}
//点击事件 判断缩放比例             touchstart(e) {                let x = e.touches[0].x                let y = e.touches[0].y                this.node.forEach(item => {                    if (x > item.x * this.scale && x < (item.x + item.w) * this.scale                        && y > item.y * this.scale && y < (item.y + item.h) * this.scale) {                        //在范围内,根据标记定义节点类型                        this.lookDetial(item)                    }                })             },

目前就可以 最后需要注意 uniapp 对画布图片的大小,宽高,有很大的限制,如果页面没有显示,或者报错 80%就是这个原因

plus.io.resolveLocalFileSystemURL 安卓可以使用这个来压缩

来源地址:https://blog.csdn.net/qq_49073580/article/details/128934449

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

uniapp使用canvas+手势缩放

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android使用ImageView实现支持手势缩放效果

TouchImageView继承自ImageView具有ImageView的所有功能;除此之外,还有缩放、拖拽、双击放大等功能,支持viewpager和scaletype,并伴有动画效果。sharedConstructing private
2022-06-06

Android手势放大缩小组件

每天学一点2020.4.22(Android-1)Android手势放大缩小组件1. 在Activity中使用2. 在Fragment中使用 Android手势放大缩小组件 这次是我第一次分享每天所学到的东西。今天所要分享的是在Androi
2022-06-06

Android手势控制实现缩放、移动图片

本文实例为大家分享了Android手势控制实现缩放、移动图片的方法,供大家参考,具体内容如下 新建一个触摸监听器类package com.liyong.btprinter; import android.graphics.Matrix;
2022-06-06

Android ImageView随手势变化动态缩放图片

在Android实际项目开发中,经常要用到ImageView这个组件,如果纯粹只是用来显示某一张图片,这个原生的组件是很方便的。但有时候为了效果更炫一点,比如很多软件都有的对图片的处理,随着手势的变化来拉大或缩小图片,这时就需要对原生的Im
2022-06-06

JS前端使用canvas搞一个手势识别

这篇文章主要为大家介绍了JS前端使用canvas搞一个手势识别的实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

OpenCV实战之实现手势虚拟缩放效果

本篇将会以HandTrackingModule为模块,实现通过手势对本人的博客海报进行缩放。文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2022-11-13

Android 使用Vitamio打造自己的万能播放器(2)—— 手势控制亮度、音量、缩放

前言本章继续完善播放相关播放器的核心功能,为后续扩展打好基础。系列1、Android 使用Vitamio打造自己的万能播放器(1)——准备 正文 一、实现目标 1.1 亮度控制 模仿VPlayer界面: 1.
2022-06-06

Android手势滑动实现ImageView缩放图片大小

本文推出了两种Android手势实现ImageView缩放图片大小的方法,分享给大家供大家参考,具体内容如下 方法一: 将以下代码写到MulitPointTouchListener.java中,然后对你相应的图片进行OnTouchListe
2022-06-06

怎么在html5中使用canvas实现手势解锁

怎么在html5中使用canvas实现手势解锁?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。demo.html
2023-06-09

Android手势滑动实现两点触摸缩放图片

学习安卓手势滑动,多点触摸放大缩小图片,分享给大家供大家参考,具体代码如下 1.布局文件如下main.xml 2022-06-06

怎么使用canvas压缩图片

今天就跟大家聊聊有关怎么使用canvas压缩图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.首先要先获取到图片文件var eleFile = document.querySel
2023-06-09

使用canvas怎么实现一个手势解锁功能

使用canvas怎么实现一个手势解锁功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。手势解锁通过手指将屏幕上的九个点依次连接起来形成一个图案,所以叫图案解锁。
2023-06-09

使用Canvas怎么实现一个手势控制功能

使用Canvas怎么实现一个手势控制功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先讲一下思路:首先跟图需求可以知道,作出这样的效果需要一组对象,每个对象有颜色,所占
2023-06-09

Android通过手势实现的缩放处理实例代码

网络上传言HTC的HERO-ROM支持多点触摸的论证大多源于浏览网页和图片时,能像IPhone一样通过手势来控制页面的大小。下面的例子是利用现有的API实现HERO浏览图片和网页的缩放功能。 主要原理是onTouchEvent事件中的参数
2022-06-06

Android应用中实现手势控制图片缩放的完全攻略

一、概述 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 我相信看图的整个步骤,大家或者说用户应该不希望被打断把~~~“我擦,竟然不能
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录