当前位置: 首页 > news >正文

微信小程序canvas画布实现矩形元素自由缩放、移动功能

一、获取画布信息并绘制背景

.whml

<canvas class="canvas" type="2d" id="myCanvas" bindtouchstart="get_rect_touch_position" bindtouchmove="move_or_scale" bind:tap="finish_edit_check"/>

定义canvas元素,需要设置type="2d",后续在js可通过Canvas.getContext('2d') 接口可以获取 CanvasRenderingContext2D对象,用以在画布绘制图形。

bindtouchstart="get_rect_touch_position":用户触摸画布时,获取并更新触摸位置,见段落四

 bindtouchmove="move_or_scale":用户划动画布时,判断是否是缩放操作或移动操作

bind:tap="finish_edit_check":触摸矩形外部,结束编辑

.wxss

.canvas{background-color: white;height: 65vh;width: 100%;margin-top: 5px;margin-bottom: 5px;  
}

定义canvas显示样式,包含宽度、高度、背景色等,也可自定义其他显示样式。 

 .js

获取画布对象并设置背景图

onReady() {const query = wx.createSelectorQuery()query.select('#myCanvas').fields({ node: true, size: true }).exec((res) => {const canvas = res[0].nodeconst ctx = canvas.getContext('2d')const dpr = wx.getSystemInfoSync().pixelRatiothis.setData({pixelRatio: dpr})canvas.width = res[0].width * dprcanvas.height = res[0].height * dpr      var bg = canvas.createImage()var bg_info = {img: bg,width: canvas.width,height: canvas.height}bg.src = "../../image/白屏竖.png"bg.onload = () =>{ctx.drawImage(bg,0,0,canvas.width,canvas.height)}this.setData({canvas: canvas,ctx: ctx,bg_info: bg_info})})},

将获取的canvas和canvas 2d对象通过this.setData设置为全部变量,后续在其他函数可直接调用。 

二、绘制矩形

可在whml添加按钮或图表,点击后调用绘制矩形函数,作为测试,也可在以上onReady函数获取画布对象后调用绘制矩形函数。

http://www.lryc.cn/news/280349.html

相关文章:

  • 一文搞懂 Python 3 中的数据类型
  • 学习笔记之——3D Gaussian Splatting源码解读
  • Flink standalone集群部署配置
  • Python: + 运算符、append() 方法和 extend()方法的区别和用法
  • 【MySQL】mysql集群
  • zabbix监控windows主机
  • 单例模式的八种写法、单例和并发的关系
  • 基于实时Linux+FPGA实现NI CompactRIO系统详解
  • Webhook端口中的自定义签名身份认证
  • 用Linux的视角来理解缓冲区概念
  • C#中Enumerable.Range(Int32, Int32) 方法用于计算
  • Linux和windows进程同步与线程同步那些事儿(四):windows 下进程同步
  • 1. Logback介绍
  • SqueezeNet:通过紧凑架构彻底改变深度学习
  • Python:正则表达式之re.group()用法
  • Shiro框架:Shiro登录认证流程源码解析
  • WEB前端人机交互导论实验-实训2格式化文本、段落与列表
  • Python:list列表与tuple元组的区别
  • 如何基于 Gin 封装出属于自己 Web 框架?
  • VUE element-ui实现表格动态展示、动态删减列、动态排序、动态搜索条件配置、表单组件化。
  • 压测工具ab
  • P4学习(一) 环境搭建
  • openssl3.2 - 官方demo学习 - server-arg.c
  • Windows RPC运行时漏洞事后总结
  • 运算电路(1)——加法器
  • ESP32-WIFI(Arduino)
  • 【网络虚拟化】网络设备常见冗余方式——堆叠、M-Lag、DRNI
  • arm的侏罗纪二 cache学习
  • Protecting Intellectual Property of Deep NeuralNetworks with Watermarking
  • c++学习笔记-STL案例-机房预约系统1-准备工作