美文网首页
小程序canvas组件实现涂鸦板功能

小程序canvas组件实现涂鸦板功能

作者: 5cc9c8608284 | 来源:发表于2022-05-03 11:08 被阅读0次

这篇文章我们利用wx canvas组件来实现涂鸦板的功能,主要实现了一些比较简单的功能,绘图,改变画笔粗细,改变画笔颜色,仅此而已,代码如下相关api可以参考官网:
canvas.wxml

<view class="container">
<view class="canvas-area">
    <canvas canvas-id="mycanvas" disable-scroll='{{false}}' bindtouchstart='touchstart' bindtouchmove='touchmove' class="mycanvas"></canvas>
</view>
<view class="canvas-tools">
<!-- 细笔 -->
//这里以data-param的形式传递参数,在js事件中,可以通过e.currentTarget.dataset.param获取我们传过去的值
<view class="box box1" data-param="5" bindtap="penselect"></view>
<!-- 粗笔 -->
<view class="box box2" data-param="15"  bindtap="penselect"></view>
<!-- 颜色 -->
<view class="box box3" data-param="orange"  bindtap="selectColor"></view>
<view class="box box4" data-param="#ff0000"  bindtap="selectColor"></view>
</view>
</view>

canvas.wxss

page{
    height: 100%;
}
.container{
height: 100%;
width: 100%;
position: relative;
}
.canvas-area{
    height: 100%;
    width: 100%;
}
.mycanvas{
    width: 100%;
    height: 100%;
    background-color: lightcyan;
}
.canvas-tools{
    width: 100%;
    position: fixed;
    left: 0;
    bottom: 20rpx;
    display: flex;
    justify-content: space-around;
}
.box{
    width: 100rpx;
    height: 100rpx;
    border-radius: 50%;
    background-color: purple;
}
.box3{
    background-color: orange;
}
.box4{
    background-color: red;
}

canvas.js

Page({
    startX:0,//起点横坐标
    startY:0,//起点纵坐标
    /**
     * 页面的初始数据
     */
    data: {
     pen:3,//笔的粗细
     color:'#00ff00',//笔的颜色
    },
    /**
     * 改变笔的颜色
     */
    selectColor(e){
        console.log(e,'select');
        let val=e.currentTarget.dataset.param;
        this.setData({
            color:val
        })
    },
    /**
     * 改变笔的粗细
     */
    penselect(e){
        console.log(e);
        let val=e.currentTarget.dataset.param;
        this.setData({
            pen:val
        })
    },
    /**
     * 触摸开始事件
     */
    touchstart(e){
        // 获取起点坐标位置
        this.startX=e.changedTouches[0].x;
        this.startY=e.changedTouches[0].y;
        // 创建绘图上下文对象、
        this.context=wx.createContext();
        // 设置颜色
        this.context.setStrokeStyle(this.data.color);
        // 设置笔触(笔的宽度)
        this.context.setLineWidth(this.data.pen);
        // 设置笔边('圆角)
        this.context.setLineCap('round');
        // 开始绘制
        this.context.beginPath()

    },
    /**
     * 触摸移动事件
     */
    touchmove(e){
        console.log(e,'touchmove');
        // 获取移动后的新坐标
        var startX1=e.changedTouches[0].x;
        var 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;
        // 以上的操作都是在内存中完成的
        var that=this
        // 绘制到界面上
        wx.drawCanvas({
            canvasId:'mycanvas',
            reserve:true,//是否存储
            actions:that.context.getActions(),//获取绘图动作的数组
        })
    },
})

效果如下:


微信涂鸦板.png

相关文章

网友评论

      本文标题:小程序canvas组件实现涂鸦板功能

      本文链接:https://www.haomeiwen.com/subject/bxpwyrtx.html