iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >uniapp使用canvas+手势缩放
  • 412
分享到

uniapp使用canvas+手势缩放

前端androidPoweredby金山文档 2023-09-18 09:09:13 412人浏览 泡泡鱼
摘要

功能介绍,工程类app,需要在手机端查看图纸,canvas绘制点,线。整理随意放大缩小。 canvas绘制方法 //画布image drawImage(ctx, pa

功能介绍,工程类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

--结束END--

本文标题: uniapp使用canvas+手势缩放

本文链接: https://www.lsjlt.com/news/411561.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • uniapp使用canvas+手势缩放
    功能介绍,工程类app,需要在手机端查看图纸,canvas绘制点,线。整理随意放大缩小。 canvas绘制方法 //画布image drawImage(ctx, pa...
    99+
    2023-09-18
    前端 android Powered by 金山文档
  • AngularJS如何仿微信图片手势缩放
    小编给大家分享一下AngularJS如何仿微信图片手势缩放,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!AngularJS 仿微信图片手势缩放的实例前言:最近,公司做一个混合应用项目,涉及...
    99+
    2024-04-02
  • 怎么使用HTML5 Canvas API控制图片的缩放变换
    这篇文章给大家分享的是有关怎么使用HTML5 Canvas API控制图片的缩放变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。缩放变换scale(sx,sy)传入两个参数,分...
    99+
    2024-04-02
  • OpenCV实战之实现手势虚拟缩放效果
    目录0、项目介绍1、项目展示2、项目搭建3、项目的代码与讲解0、项目介绍 本篇将会以HandTrackingModule为模块,这里的模块与之前的有所不同,请按照本篇为准,前面的Ha...
    99+
    2022-11-13
    OpenCV手势虚拟缩放 OpenCV 虚拟缩放 OpenCV 手势
  • JS前端使用canvas搞一个手势识别
    目录前言具体步骤第一步:手势绘制第二步:重新取样第二步:平移第三步:旋转第四步:缩放第五步:手势录入第六步:比较(重点)注意事项比较的基本套路(可跳过)关于多笔画(可跳过)小结前言 ...
    99+
    2022-11-13
    JS前端canvas手势识别 canvas手势识别
  • 怎么在html5中使用canvas实现手势解锁
    怎么在html5中使用canvas实现手势解锁?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。demo.html<!DOCTYPE html><h...
    99+
    2023-06-09
  • 怎么使用canvas压缩图片
    今天就跟大家聊聊有关怎么使用canvas压缩图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先要先获取到图片文件var eleFile = docu...
    99+
    2023-06-09
  • 如何使用HTML5 Canvas实现图片缩放、颜色渐变效果
    这篇文章主要为大家展示了“如何使用HTML5 Canvas实现图片缩放、颜色渐变效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5 Canva...
    99+
    2024-04-02
  • 使用Canvas怎么实现一个手势控制功能
    使用Canvas怎么实现一个手势控制功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先讲一下思路:首先跟图需求可以知道,作出这样的效果需要一组对象,每个对象有颜色,所占...
    99+
    2023-06-09
  • 使用canvas怎么实现一个手势解锁功能
    使用canvas怎么实现一个手势解锁功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。手势解锁通过手指将屏幕上的九个点依次连接起来形成一个图案,所以叫图案解锁。...
    99+
    2023-06-09
  • 怎么用HTML5 Canvas API控制图片的缩放变换
    这篇文章将为大家详细讲解有关怎么用HTML5 Canvas API控制图片的缩放变换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 缩放变换scale(sx,sy)传入...
    99+
    2024-04-02
  • Vue和uniapp中该如何使用canvas详解
    目录Vue与uniapp中如何使用canvas?示例属性说明注意事项:总结Vue与uniapp中如何使用canvas? 一般Vue情况下我们使用canvas是这样使用的 //创建ca...
    99+
    2022-11-13
    uni-app vue uniapp使用canvas vue uniapp canvas
  • JS前端使用Canvas快速实现手势解锁特效
    目录前言Demo需要实现的功能初始化数据和页面渲染touchstart 手指开始触摸事件touchmove 监听手指滑动事件touchend 监听手指触摸结束事件页面滚动处理连接的两...
    99+
    2024-04-02
  • 使用canvas怎么对图片进行压缩
    本篇文章为大家展示了使用canvas怎么对图片进行压缩,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前提的函数将file文件转化为base64function changeFileToBa...
    99+
    2023-06-09
  • 小程序的拖拽、缩放和旋转手势功能怎么实现
    这篇文章主要介绍“小程序的拖拽、缩放和旋转手势功能怎么实现”,在日常操作中,相信很多人在小程序的拖拽、缩放和旋转手势功能怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序的拖拽、缩放和旋转手势功能怎...
    99+
    2023-06-26
  • Vue使用canvas实现图片压缩上传
    本文实例为大家分享了Vue使用canvas实现图片压缩上传的具体代码,供大家参考,具体内容如下 场景:如用户头像等 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大...
    99+
    2024-04-02
  • 使用canvas怎么对图片压缩上传
    使用canvas怎么对图片压缩上传?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先得有一个上传按钮。<input type="file"&...
    99+
    2023-06-09
  • 怎么在html5中使用canvas压缩图片
    这期内容当中小编将会给大家带来有关怎么在html5中使用canvas压缩图片,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。知识点:canvas 的 toDataURL('image/png'...
    99+
    2023-06-09
  • 使用Qt的QChartView实现缩放和放大功能
    目录更好用的QCustomPlotQCustomPlot介绍QCustomPlot的下载与安装QCustomPlot的使用使用示例Qt的常用图表方式Qwt、QChart、QCusto...
    99+
    2024-04-02
  • 如何用js实现手指缩放图片功能
    这篇“如何用js实现手指缩放图片功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用js实现手指缩放图片功能”文章吧。需...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作