画布html:

<canvas style="width: 100vw; height:81vh;border-top:.2vh solid #ddd;" canvas-id="palette" bindtouchstart='touchstart' bindtouchmove='touchMove' bindtouchend='touchEnd' disable-scroll='true'></canvas>
复制代码

绘画实现:

 touchstart: function() {let tinct, lineWidth;if (this.data.brushState == 'p') {tinct = this.data.tinctList[this.data.tinctCurr];lineWidth = this.data.tinctSize;} else {tinct = "#ffffff";lineWidth = 20;this.context.setLineCap('round') ;//设置线条端点的样式this.context.setLineJoin('round') ;//设置两线相交处的样式}this.context.setStrokeStyle(tinct); //设置描边颜色this.context.setLineWidth(lineWidth); //设置线条宽度this.data.points.push({point: [],tinct: tinct,lineWidth: lineWidth});},touchMove: function(e) {let pos = e.touches[0],da = this.data,po = da.points[da.points.length - 1].point;po.push({x: pos.x,y: pos.y});this.bindDraw(po);},touchEnd: function(e) {console.log(this.data.points);},//绘制bindDraw: function(point) {this.context.moveTo(point[0].x, point[0].y);for (var i = 1; i < point.length; i++) {this.context.lineTo(point[i].x, point[i].y);}this.context.stroke();this.context.draw(true);},
复制代码

切换成画笔/橡皮檫:

 <image class="{{brushState=='p'?'selected':''}}" src='/image/jd_pencil.png' data-state='p' bindtap='switchBrush'></image><image class="{{brushState=='c'?'selected':''}}" src='/image/jd_eraser.png' data-state='c' bindtap='switchBrush'></image>
复制代码
  switchBrush: function(e) {this.setData({brushState: e.currentTarget.dataset.state});},
复制代码

绘制回退:

  <image src='/image/jd_back.png' bindtap='drawBack'></image>
复制代码
  drawBack: function() {if (this.data.points.length == 0) return false;this.context.clearRect(0, 0, 400, 500);this.context.draw();this.data.points.pop();console.log(this.data.points);let po = this.data.points;for (let i = 0; i < po.length; i++) {this.context.setStrokeStyle(po[i].tinct); //设置描边颜色this.context.setLineWidth(po[i].lineWidth); //设置线条宽度// this.context.beginPath();this.bindDraw(po[i].point);}},
复制代码

清空画布:

 <image src='/image/jd_clear.png' bindtap='drawClear'></image>
复制代码
  drawClear:function(){this.context.clearRect(0, 0, 400, 500);this.context.draw();this.setData({points:[]});console.log(this.data.points);},
复制代码

源码

萌生写画板小程序的想法,是因为之前画画练习下了绘画APP,又刚好学到小程序API的画布内容。两相结合,修修改改,形成了现在的功能。想法转变成实物,总是开心的 o((^▽^))o

微信小程序-画板工具实现相关推荐

  1. 微信小程序开发工具 清除授权缓存/文件缓存/登录缓存等等

    今天2.19.3.25 在开发微信小程序时,作为测试号想清除授权缓存,一直没有找到方法, 最后无意中看到了解决方法 微信小程序开发工具 清除授权缓存/文件缓存/登录缓存等等.完美解决

  2. 微信小程序开发工具中快捷键

    微信小程序开发工具表面上是没有更多的样式类的工具,例如缩进.隐藏代码什么的. 现在总结一下小程序开发工具常用的一些快捷键: 格式调整 Ctrl+S:保存文件 Ctrl+[, Ctrl+]:代码行缩进 ...

  3. 最新版本微信小程序开发工具的使用

    微信小程序简介 微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或搜一下即可打 ...

  4. 微信小程序 开发工具 项目创建步骤

    账号申请 后台小程序信息完善 安装开发工具IDE 小程序项目搭建 项目编译 真机预览调试 小程序开发前准备: ①申请账号 ②安装开发工具 账号申请 进入小程序注册页 根据指引填写信息和提交相应的资料, ...

  5. 微信小程序开发工具 将已存在的Git项目在新开发者下拉取推送

    微信小程序开发工具 将已存在的Git项目在新开发者下拉取推送 前言 流程 完事 前言 最近有同事离职了,交接了一个微信小程序的项目下来,源码放在了公司内部的GIT上面,当我下载下来维护之后发现,在微信 ...

  6. 微信小程序开发工具能正常请求后台数据,手机预览请求失败

    微信小程序开发工具能正常请求后台数据,手机预览请求失败 问题描述 微信开发者工具调试完想用手机预览效果,结果发现凡是后台请求都失败. 原因分析 可能的原因有三个: 微信开发者工具详情里的本地设置,没有 ...

  7. 微信小程序开发工具win10下编译非常慢解决方法

    微信小程序开发工具win10下编译非常慢的解决方法 点击微信小程序开发工具右侧详情,在本地设置中将[启用多核心编译]选项去掉,开发工具重启即可

  8. 微信小程序开发者工具的使用

    微信小程序开发者工具的使用:登录自己的微信小程序页面,找到工具,下载微信开发者工具.下载好后,扫码登录自己的小程序.在登录的过程中,需要输入自己的小程序的appid.登录好之后就会显示这样的一个页面. ...

  9. 微信开发者工具无法选择预览和真机调试_小程序开发 第二篇:使用微信小程序开发者工具、wepy框架初始化项目...

    1.微信小程序开发者工具 使用: 小程序原生开发:直接使用小程序开发者工具打开项目即可 小程序框架开发:首选官方提供类vue.js开发框架 wepy.js ,备选 mpVue.我们选择的是 wepy ...

最新文章

  1. 栈与队列9——最大值减去最小值小于或等于num的子数组的数量
  2. libvmi编译问题
  3. Leaflet中原生方式实现测距
  4. php中隐藏和展开文章,手机端第一屏页面文章的展开和隐藏_html/css_WEB-ITnose
  5. sql oracle 自增长字段,在Oracle、MySQL、MS SQL Server中创设自动增长字段
  6. Linux Redhat5.7系统配置网易的yum源
  7. 哈罗顺风车送到终点吗_没有了顺风车,滴滴“特惠拼车”来了!比拼车更低价,比顺风车更安全吗?...
  8. EXCEL数据汇总-数据透视图
  9. Java集合系列:Set解析
  10. 计算图是个什么东西?一大堆的函数用法笔记
  11. spring mvc---controller返回值
  12. python美女源代码_单身程序员,每晚用python抓取百万张美女图片,连女友都不想找了...
  13. Matlab系列教程_数值计算_求和(积)_求累加(积)
  14. HTML实现直播礼物特效,抖音哪些礼物可以触发特效,抖音直播礼物特效大全
  15. QEMU新的-nic选项
  16. IDEA代码和页面前进后退快捷键
  17. 计算机为什么要用补码?
  18. python爬虫与java爬虫的区别_java爬虫(一)主流爬虫框架的基本介绍
  19. 现在各种云建站,挑两个给大家分析一下。
  20. vmware workstation 8序列号

热门文章

  1. 道路监控传输资源紧张?PON技术的五大特点
  2. BUGKU CFT初学之WEB
  3. beego的定时任务
  4. java计算机毕业设计供电公司安全生产考试系统源码+mysql数据库+系统+lw文档+部署
  5. xp系统网上邻居看不到局域网电脑_为什么我新装的XP系统局域网上网上邻居找不到其他计算机?...
  6. u盘容量影响计算机运行速度,U盘怎么提高电脑运行速度?电脑提速实用技巧【详解】...
  7. Windows中Reids和RedisDesktopManager安装
  8. 使用 NGINX 作为 HTTPS 正向代理服务器
  9. 计算机音乐谱大全有点甜,《有点甜》原创歌曲简谱,汪苏泷作词 汪苏泷作曲 汪苏泷演唱 BY2演唱 - 歌曲简谱 - 声乐谱 - 词曲网...
  10. 解决“使用dameware访问远程主机后,再用windows远程桌面,远程鼠标失灵”问题