微信小程序画布与涂鸦案例
2021/10/29 17:12:01
本文主要是介绍微信小程序画布与涂鸦案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
canvas.wxml
<view class="container"> <view class="canvas_area"> <canvas canvas-id="myCanvas" class="myCanvas" disable-scroll="{{false}}" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" ></canvas> </view> <view class="canvas_tools"> <!--细笔--> <view class="box box1" bindtap="penSelect" data-param="5">细</view> <!--粗笔--> <view class="box box2" bindtap="penSelect" data-param="15">粗</view> <!--颜色--> <view class="box box3" bindtap="colorSelect" data-param="#cc0033"></view> <view class="box box4" bindtap="colorSelect" data-param="#ff9900"></view> <!--导出--> <view class="box box5" bindtap="handleOperate">操作</view> </view> </view>
canvas.wxss
page{ height: 100%; } .container { width: 100%; height: 100%; position: relative; } .canvas_area { width: 100%; height: 100%; background-color: lightblue; } .myCanvas { width: 100%; height: 100%; } .canvas_tools { position: absolute; left: 0; bottom: 20rpx; width: 100%; height: 100rpx; display: flex; flex-direction: row; justify-content: space-around; } .box { width: 100rpx; height: 100rpx; background-color: rebeccapurple; border-radius: 50%; } .box1, .box2, .box5 { color: #fff; text-align: center; line-height: 100rpx; } .box3 { background-color: #cc0033; } .box4 { background-color: #ff9900; }
canvas.js
Page({ // 定义坐标变量 startX: 0, startY: 0, /** * 页面的初始数据 */ data: { pen: 2, // 笔的粗细 color: "#00ff00", // 笔的颜色 }, /** * 选取笔的粗细 */ penSelect(e) { this.setData({ pen: parseInt(e.currentTarget.dataset.param) }); this.clearCanvas(); }, /** * 触笔颜色选择 */ colorSelect (e) { this.setData({ color: e.currentTarget.dataset.param }); }, /** * 清除画布 */ clearCanvas() { console.log("............"); this.context.draw(); }, /** * 触摸起始事件 */ touchStart(e) { // 获取当前的坐标位置 this.startX = e.changedTouches[0].x; this.startY = e.changedTouches[0].y; // 创建绘图上下文对象 this.context = wx.createCanvasContext('myCanvas', this); // 设置颜色 this.context.setStrokeStyle(this.data.color); // 设置笔触 this.context.setLineWidth(this.data.pen); // 设置笔边(圆角) this.context.setLineCap("round"); // 开始绘制 this.context.beginPath(); }, /** * 触摸的移动事件 */ touchMove(e) { // 获取移动后的新坐标 let startX1 = e.changedTouches[0].x; let startY1 = e.changedTouches[0].y; // 设置画笔移动到起始点 this.context.moveTo(this.startX, this.startY); // 绘制一条道x1,y1的直线 this.context.lineTo(startX1, startY1); // 需要进行路径描边 this.context.stroke(); // 重新设置坐标点 this.startX = startX1; this.startY = startY1; // 绘制 // this.context.draw(); wx.drawCanvas({ canvasId: "myCanvas", reserve: true, actions: this.context.getActions() // 获取绘图动作数组 }); }, /** * touchStart */ touchEnd() { }, /** * 导出 */ handleOperate() { wx.canvasToTempFilePath({ canvasId: 'myCanvas', quality: 0, success: (res) => { console.log(res); // 保存相册 wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: () => { wx.showToast({ title: '保存成功' }) }, fail: (err) => { // 授权失败 if (err.errMsg) { wx.showModal({ title: '提示', content: '您好,请先授权,在保存此图片!', showCancel: false, success(res) { if (res.confirm) { wx.openSetting({ complete: (settingdata) => { // 授权成功或者失败操作 if (settingdata.authSetting['scope.writePhotosAlbum']) { wx.showToast({ title: '授权成功' }) } else { wx.showToast({ title: '授权失败' }) } }, }) } } }) } } }); } }) } })
效果图
这篇关于微信小程序画布与涂鸦案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22微信小程序的接口信息py可以抓到吗?-icode9专业技术文章分享
- 2024-11-22怎样解析出微信小程序二维码带的参数?-icode9专业技术文章分享
- 2024-11-22微信小程序二维码怎样解析成链接?-icode9专业技术文章分享
- 2024-11-22微信小程序接口地址的域名需要怎么设置?-icode9专业技术文章分享
- 2024-11-22微信小程序的业务域名有什么作用-icode9专业技术文章分享
- 2024-11-22微信小程序 image有类似html5的onload吗?-icode9专业技术文章分享
- 2024-11-22微信小程序中怎么实现文本内容超出行数后显示省略号?-icode9专业技术文章分享
- 2024-11-22微信小程序怎么实现分享样式定制和图片定制功能?-icode9专业技术文章分享
- 2024-11-20微信小程序全栈教程:从零开始的全攻略
- 2024-11-19微信小程序全栈学习:从零开始的完整指南