微信小程序Canvas学习

目录

涂鸦

绘制文本

绘制图片


涂鸦

	<canvas canvas-id='canvasId' class='myCanvas' bindtouchstart="touchStart" bindtouchmove="touchMove"></canvas>

 1、获取画布的宽高

  onLoad: function () {
    // 获取画布的宽、高
    wx.createSelectorQuery().select('.myCanvas').boundingClientRect().exec(res => {
      this.setData({
        canvasWidth: res[0].width,
        canvasHeight: res[0].height
      });
      this.initCanvas();
    })
  }

2、初始化画布、画笔

initCanvas() {
    this.ctx = wx.createCanvasContext('canvasId');
    this.ctx.setStrokeStyle('#000');
    this.ctx.setLineWidth(5);
    this.ctx.setLineCap('round');
  },

3、监听手势,开始绘制 

  touchStart(e) {
    this.ctx.moveTo(e.touches[0].x,e.touches[0].y);
  },

  /**
   * 监听手势滑动,绘制path
   */
  touchMove(e) {
    let tempX = e.touches[0].x;
    let tempY = e.touches[0].y
    this.ctx.lineTo(tempX,tempY);
    this.ctx.stroke();
    this.ctx.draw(true);
    this.ctx.moveTo(tempX,tempY); // 绘制完成后,再将临时点作为起始点
  },

  /**
   * 清空
   */
  reset(){
    this.ctx.clearRect(0, 0, this.data.canvasWidth, this.data.canvasHeight);
    this.ctx.draw();
  },

  /**
   * 加粗
   */
  bold(){
    this.ctx.setLineWidth(10);
  },

  /**
   * 换色
   */
  color(){
    this.ctx.setStrokeStyle('#f00');
  },

绘制文本

this.ctx.font = 'normal 30px sans-serif';
this.ctx.fillStyle = '#f00';
let text = '镜花水月';
// y坐标从文字左下角开始算,measureText仅支持获取文本的宽度
this.ctx.fillText(text, 0, this.ctx.measureText('镜').width);
this.ctx.draw();

绘制图片

this.ctx.drawImage('本地路径', 0, 0, '绘制宽度', '绘制高度');
this.ctx.draw();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘彦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值