微信小程序canvas 常用api

<canvas canvas-id="canvasId" id="canvas" style="width:300px;height:400px"></canvas>
  onReady: function() {
    const ctx = wx.createCanvasContext('canvasId');
    const query = wx.createSelectorQuery().select('#canvas').boundingClientRect(res => {
       ctx.beginPath()
       ctx.save()
       ctx.moveTo(0, 0)
       ctx.lineTo(0, res.height)
       ctx.lineTo(res.width, res.height)
       ctx.lineTo(res.width, 0)
       ctx.setLineWidth(10)
       ctx.setStrokeStyle('#f00')
       ctx.closePath()
       ctx.stroke()
      ctx.beginPath()
      ctx.restore()
      ctx.setFontSize(20)
      let str = '1234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891'
      this.lineFeed(res, ctx, str)
      ctx.draw(true)
    }).exec()
   }
  // 字体换行
  lineFeed(res, ctx, str) {
    let len = str.length //字体长度
    const metrics = ctx.measureText(str[0]).width //字体宽度
   // 一行字体的宽度
    let ow = Math.floor((res.width-10) / metrics)
    //多少列
    let lei = Math.ceil(len / ow)
    for (let i = 0; i < lei; i++) {
      let str1 = ''
      str1 = str.slice(i * ow, (i + 1) * ow)
      ctx.strokeText(str1, 5, 100 + i * 20)
    }
    ctx.draw()
  },

文本文字,可以自动换行哦!
在这里插入图片描述
环切效果

 ctx.beginPath()
    ctx.arc(100, 100, 10, 0, 2 * Math.PI)
    ctx.setFillStyle('#f00')
    ctx.fill()
    ctx.clip()//相当于css overflow效果
    ctx.arc(100, 100, 100, 0, 2 * Math.PI)
    ctx.setFillStyle('#ff0')
    ctx.fill()
    ctx.draw()

微信小程序新接口demo

  querycanvas(){
    const query = wx.createSelectorQuery()
    query.select('#myCanvas')
      .fields({ node: true, size: true })
      .exec((res) => {
        const canvas = res[0].node
        const ctx = canvas.getContext('2d')
        //const dpr = wx.getSystemInfoSync().pixelRatio //分辨率 
          const dpr = 750 / getSystemInfoSync.windowWidth
        canvas.width = res[0].width * dpr //控制图片 不变形
        canvas.height = res[0].height * dpr
        ctx.scale(dpr, dpr)
        ctx.fillRect(0, 0, 100, 100)
      })

  },

参考:https://developers.weixin.qq.com/miniprogram/dev/api/canvas/RenderingContext.html

三、使用clearRect函数

var w = theCanvas.width;

var h = theCanvas.height;

context.clearRect(0, 0, w, h);

二、重置画布高度

 var w = theCanvas.width;

 var h = theCanvas.height;

 theCanvas.width = w;

 theCanvas.height = h;

使用一个新的背景色简单地填充整个画布,这样就可以清除当前内容

context.fillStyle = '#ffffff';

context.fillRect(0, 0, theCanvas.width, theCanvas.height);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

web修理工

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

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

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

打赏作者

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

抵扣说明:

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

余额充值