【微信小程序之画布】四:手指触摸绘波浪线

如果对您有帮助,请关注我,加入微信小程序开发交流qq群(173683895)相互交流学习。谢谢


功能:根据手指触摸绘画一条直线路径--> 起点为手指开始触摸时的坐标,终点为手指触摸结束时的坐标

效果图:


上代码:

<canvas class='myCanvas' canvas-id="myCanvas" bindtouchstart='EventHandleStart' bindtouchend='EventHandle' style="border: 1px solid;" />
// pages/test/test.js
var strat_x, strat_y, ent_x, ent_y, beginPath;
var ctx = wx.createCanvasContext('myCanvas');
Page({
  data: {
    _num:1
  },

  onLoad: function () {
    var that = this;
    var query = wx.createSelectorQuery();
    //选择id
    query.select('.myCanvas').boundingClientRect()
    query.exec(function (res) {
      that.setData({
        img_Width: res[0].width,
        img_Height: res[0].height
      })
      //res就是 该元素的信息 数组
      ctx.drawImage('/image/txt.jpg', 0, 0, res[0].width, res[0].height)
      ctx.draw()
    })
  },
  // 鼠标触摸事件
  EventHandleStart: function (event) {
    strat_x = event.touches[0].x;
    strat_y = event.touches[0].y;
  },
  // 鼠标结束触摸事件
  EventHandle: function (event) {
    var that = this;
      ent_x = event.changedTouches[0].x;
      ent_y = event.changedTouches[0].y;
      ctx.setLineWidth(2); // 设置线宽
      ctx.setStrokeStyle('red')
      ctx.beginPath(); //创建路径
      ctx.moveTo(strat_x, strat_y); // 设置路径起点坐标
      ctx.setLineDash();
      var xxx = ent_x - strat_x;
      var num = 5
      for (var i = 0; i < xxx; i++) {
        if (i == num && strat_x + 5 < ent_x) {
          num = num + 5
          ctx.moveTo(strat_x, strat_y);
          ctx.bezierCurveTo(strat_x, strat_y + 2, strat_x + 5, strat_y + 2, strat_x + 5, strat_y)
          strat_x = strat_x + 5
          ctx.moveTo(strat_x, strat_y);
          ctx.bezierCurveTo(strat_x, strat_y - 2, strat_x + 5, strat_y - 2, strat_x + 5, strat_y)
          strat_x = strat_x + 5
        }
      }
      ctx.stroke();//画出当前路径的边框。默认颜色色为黑色。
      ctx.setFontSize(20)
      ctx.setFillStyle('red')
      ctx.draw(true)
    },
})


猜你喜欢

转载自blog.csdn.net/qq_35713752/article/details/80099381