• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序_(组件)canvas画布

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

 canvas画布效果  官方文档:传送门

 

 

Page({
  canvasIdErrorCallback: function (e) {
    console.error(e.detail.errMsg)
  },
  onReady: function (e) {
    // 使用 wx.createContext 获取绘图上下文 context
    var context = wx.createCanvasContext('firstCanvas')

    //设置画笔的颜色
    context.setStrokeStyle("#00ff00")
    //设置线宽为5个像素
    context.setLineWidth(5)
    //左上角坐标(0,0)长宽200
    context.rect(0, 0, 200, 200)
    //对上面定义动作进行绘制
    context.stroke()

    context.setStrokeStyle("#ff0000")
 
    context.setLineWidth(2)
    //移动画笔的位置到(160,100)
    context.moveTo(160, 100)
    //左上角坐标(100,100),半径为60,起始角度0°,终止角度2π,顺时针绘制
    context.arc(100, 100, 60, 0, 2 * Math.PI, false)
    context.moveTo(140, 100)
    context.arc(100, 100, 40, 0, Math.PI, false)
    context.moveTo(85, 80)
    context.arc(80, 80, 5, 0, 2 * Math.PI, true)
    context.moveTo(125, 80)
    context.arc(120, 80, 5, 0, 2 * Math.PI, true)
    context.stroke()
    context.draw()
  }
})
text.js

 

Gary 微信小程序
<view><canvas style="width: 300px; height: 400px; background:blue;" canvas-id="firstCanvas"></canvas>
</view>
text.wxml

 

{
  "pages":[
    "pages/test/test",
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }
}
app.json

 

实现过程

 

  canvas-id   canvas 组件的唯一标识符

  同一页面中的 canvas-id 不可重复,如果使用一个已经出现过的 canvas-id,该 canvas 标签对应的画布将被隐藏并不再正常工作

 

定义画布样式

<view><canvas style="width: 300px; height: 400px; background:blue;" canvas-id="firstCanvas"></canvas>
</view>

 

在JS中添加onReady: function()函数(dom加载完成后执行的函数)

 

  绘制矩形

    //设置画笔的颜色
    context.setStrokeStyle("#00ff00")
    //设置线宽为5个像素
    context.setLineWidth(5)
    //左上角坐标(0,0)长宽200
    context.rect(0, 0, 200, 200)
    //对上面定义动作进行绘制
    context.stroke()

 

  绘制四个圆

    context.setStrokeStyle("#ff0000")
 
    context.setLineWidth(2)
    //移动画笔的位置到(160,100)
    context.moveTo(160, 100)
    //坐标原点(100,100),半径为60,起始角度0°,终止角度2π,顺时针绘制
    context.arc(100, 100, 60, 0, 2 * Math.PI, false)
    context.moveTo(140, 100)
    context.arc(100, 100, 40, 0, Math.PI, false)
    context.moveTo(85, 80)
    context.arc(80, 80, 5, 0, 2 * Math.PI, true)
    context.moveTo(125, 80)
    context.arc(120, 80, 5, 0, 2 * Math.PI, true)
    context.stroke()
    context.draw()

 

 context.arc(100, 100, 60, 0, 2 * Math.PI, false)

  第六个参数,当参数为true时画笔顺时针绘制,为false时逆时针绘制

 

绘制移动的图形效果

 

 

Page({
  canvasIdErrorCallback: function (e) {
    console.error(e.detail.errMsg)
  },

  pos:{
    x:0,
    y:0
  },

  onReady: function (e) {
    this.draw()
  },

  btnclick:function(){
    setInterval(this.draw,10)
  },

  draw:function(){

    this.pos.x++;
    this.pos.y++;
    // 使用 wx.createContext 获取绘图上下文 context
    var context = wx.createCanvasContext('firstCanvas')

   
    //左上角坐标(100,100),半径为60,起始角度0°,终止角度2π,顺时针绘制
    context.arc(this.pos.x, this.pos.y, 60, 0, 2 * Math.PI, false)

    context.stroke()
    context.draw()
  }
})
test.js

 

Gary 微信小程序
<view><canvas style="width: 300px; height: 400px; background:blue;" canvas-id="firstCanvas"
  bindtouchstart="btnclick"></canvas>
</view>
text.wxml

 

{
  "pages":[
    "pages/test/test",
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  }
}
app.json

 

实现过程

 

  在text.wxml中绑定手指点击事件bindtouchstart="btnclick"

bindtouchstart            手指触摸动作开始
bindtouchmove            手指触摸后移动
bindtouchend            手指触摸动作结束
bindtouchcancel            手指触摸动作被打断,如来电提醒,弹窗
bindlongtap            手指长按 500ms 之后触发,触发了长按事件后进行移动不会触发屏幕的滚动
binderror            当发生错误时触发 error 事件,detail = {errMsg: 'something wrong'}
手指触碰属性名

 

  初始化图形坐标原点

1  pos:{
2     x:0,
3     y:0
4   },

 

  当dom加载完成后执行绘画动作draw()

  onReady: function (e) {
    this.draw()
  },

 

  添加draw()绘画动作

  draw:function(){

    this.pos.x++;
    this.pos.y++;
    // 使用 wx.createContext 获取绘图上下文 context
    var context = wx.createCanvasContext('firstCanvas')

   
    //左上角坐标(100,100),半径为60,起始角度0°,终止角度2π,顺时针绘制
    context.arc(this.pos.x, this.pos.y, 60, 0, 2 * Math.PI, false)

    context.stroke()
    context.draw()
  }

 

  手指触摸动作后图形坐标每隔10ms进行x++,y++方向移动(设置事件间隔对图形进行重绘制)

  btnclick:function(){
    setInterval(this.draw,10)
  },

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
小程序获取用户默认地址的代码发布时间:2022-07-18
下一篇:
微信小程序用户授权,以及判断登录是否过期的方法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap