问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

微信小程序能用canvas吗

发布网友 发布时间:2022-04-22 10:32

我来回答

2个回答

热心网友 时间:2022-04-20 00:33

微信小程序里的canvas 非 h5 canvas有很多不一样的地方,以下把微信小程序的canvas叫做wxcanvas
下面全是我一点点测试出的干货,耐心看:
1.wxcanvas,不像h5canvas那样有width和height属性和width和height的style样式。他只有style样式,可以理解为他就是个框吧;
2.wxcanvas不要当成真的H5canvas,就当它是个div就行,画出范围的东西也是存在的,改变width,height就显示出来了,或者说这里有重绘,但具体如何实现的不知道;
3.改变wxcanvas的style的width,height,并不改为原画布上的东西的大小;
4.css transform变换中的变大缩小也无法改变原画布上的东西大小
5.官方说法:context只是一个记录方法调用的容器,用于生成记录绘制行为的actions数组。context跟<canvas/>不存在对应关系,一个context生成画布的绘制动作数组可以应用于多个<canvas/>。
实际上,context.getActions()后,context中的信息会被清空,如果想重复利用,需要var temp=context.getActions()将操作数组保存下来,才可重复用于wx.drawcanvas;
6.注意
wx.drawCanvas({  canvasId: 'target',  actions: context.getActions()});

默认会清空画布,想不清空需要
wx.drawCanvas({ canvasId: 'target', actions: context.getActions(), reserve:true});

7.《重点》
<canvas disable-scroll="true" catchtouchmove="ccvsMove" bindtouchmove="cvsMove" canvas-id="target" id="target" style='width:{{width}}px;height:{{height}}px'></canvas>

注意,disable-scroll="true"和bindtouchmove="cvsMove"同时存在时才能避免页面跟着动,catchtouchmove是不行的
上面的写法,ccvsMove和cvsMove会都触发,
ccvsMove返回的是普通touch事件对象,有pageX,clientX等,
cvsMove返回的是canvasTouch事件对象,没有pageX,clientX,只有x,y
8.
wx.drawCanvas({ canvasId: 'target', actions: [], reserve:false});

可以清空画布和画布的状态
9.画布的scale tranlate rotate等状态,在reserve:true时会接着上次的状态
10. context.getActions()返回的数组很有用,打印出来你会发现里面的内容你都能看懂,可以直接修改数组改变画的动作
11.wx.drawCanvas时context.drawImage在手机上可以画出来,在电脑开发工具上画不出来
12.wx.canvasToTempFilePath
官方文档中只有一行,原来
wx.canvasToTempFilePath参数为一个对象包括canvasID,success,fail,complete,和wx.saveFile差不多;wx.canvasToTempFilePath({ canvasId: 'target', success: function success(res) { wx.saveFile({ tempFilePath: res.tempFilePath, success: function success(res) { console.log('saved::' + res.savedFilePath); }, complete: function fail(e) { console.log(e.errMsg); } }); }, complete: function complete(e) { console.log(e.errMsg); }});

热心网友 时间:2022-04-20 01:51

有专用的组件用:jmGraph 网页链接

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 微信小程序与Android和iOS开发的区别 微信小程序点击链接内启动safari 安装oracle rac asm 私有ip需要网卡吗 RAC1的监听服务总是offline,配置文件没有改过 oracle rac安装完怎么连接 如何在xen server上安装 oracle rac VMware怎么新建虚拟机|VMwareWorkstation创建虚拟机步骤 安装oracle数据库,配置文件的问题 怎样安装racipmotpowerflex 如何修改Linux环境下的Oracle的IP地址配置 代理商协议范本 在linux上安装了Oracle,linux主机设置了ip,该如何设置Oracle的ip地址呢? 商业英语合同模板(15):不可抗力事故发生后,如何处理 linux下安装rac配置网卡的问题 win7下ip变换后如何设置oracle配置文件,使得可以启 VMware win2003 Oracle 10g RAC 各节点的IP如何配置 商品房买卖合同解析 商品房买卖合同范本下载 安装Oracle数据库的时候IP地址怎么配置了 鍝&#xFFFD;噷涔板埌铦堣潏 男人在什么年龄段性欲最强 微信小程序ios10.0以下版本为什么不显示页面 如何在EXCEL中寻找电话号码 不知道手机号中间几位数如何在excel表格中快速筛选前后相同的号码? 如何查找excel 表格里面的 手机号码 404 Not Found 从Excel中怎么筛选电话号码啊? 怎样在EXCEL中提取出手机号码? excel中怎么自动识别姓名电话地址 在一张excel表中有一些电话号码,如何找出相同的电话号码 404 Not Found 怎样快速找出EXCEL中位数不对的电话号码 在EXCEL表格中如何查找电话号码.请高手指点..谢谢. excel中有电话号码,怎么快速的查找啊 excel 如何同事查找多个手机号码 Microsoft Excel 里怎么快速调取人名或电话号码 404 Not Found excel怎么筛选电话号码? 欧洲货币市场产生的直接原因是什么? 欧洲货币市场的影响意义 离岸金融市场