微信小程序canvas截取任意形状的实现代码


Posted in Javascript onJanuary 13, 2020

最近在研究拼图验证码实现,需要对图片的部分模块进行特殊形状切割出一小块,明白后原来是如此简单,第一步就是将所有绘制的形状用线勾出(直线、弧线、贝塞尔曲线都可以)形成闭环,第二步就是切割绘制,第二步不麻烦,麻烦的只是第一步,需要一些计算,所以会在以后,尽力的多保存一些特殊形状的方法。

比如:

微信小程序canvas截取任意形状的实现代码

代码

drawPic(x,y,r){
  // const ctxBackground = wx.createCanvasContext('canvasBackground')
  const ctxBackground = wx.createCanvasContext('canvasBackground')
  ctxBackground.save();
  //开始一个新的绘制路径
  ctxBackground.beginPath();
  //设置路径起点坐标
  ctxBackground.moveTo(x, y);
  ctxBackground.arcTo(x, y - r, x + r, y - r, r);
  ctxBackground.lineTo(x + 2 * r, y - r);
  ctxBackground.arcTo(x + 2 * r, y - 2 * r, x + 3 * r, y - 2 * r, r);
  ctxBackground.arcTo(x + 4 * r, y - 2 * r, x + 4 * r, y - r, r);
  ctxBackground.lineTo(x + 5 * r, y - r);
  ctxBackground.arcTo(x + 6 * r, y - r, x + 6 * r, y, r);
  ctxBackground.lineTo(x + 6 * r, y + r);
  ctxBackground.arcTo(x + 7 * r, y + r, x + 7 * r, y + 2 * r, r);
  ctxBackground.arcTo(x + 7 * r, y + 3 * r, x + 6 * r, y + 3 * r, r);
  ctxBackground.lineTo(x + 6 * r, y + 4 * r);
  ctxBackground.arcTo(x + 6 * r, y + 5 * r, x + 5 * r, y + 5 * r, r);
  ctxBackground.lineTo(x + 4 * r, y + 5 * r);
  ctxBackground.arcTo(x + 4 * r, y + 4 * r, x + 3 * r, y + 4 * r, r);
  ctxBackground.arcTo(x + 2 * r, y + 4 * r, x + 2 * r, y + 5 * r, r);
  ctxBackground.lineTo(x + r, y + 5 * r);
  ctxBackground.arcTo(x, y + 5 * r, x, y + 4 * r, r);
  ctxBackground.lineTo(x, y + 3 * r);
  ctxBackground.arcTo(x + r, y + 3 * r, x + r, y + 2 * r, r);
  ctxBackground.arcTo(x + r, y + r, x, y + r, r);
  ctxBackground.lineTo(x, y);
  //先关闭绘制路径。注意,此时将会使用直线连接当前端点和起始端点。
  ctxBackground.closePath();
  ctxBackground.clip();
  ctxBackground.stroke(); //画线轮廓
  wx.getImageInfo({
   src: 'cloud://normal-env/000060.jpg',
   success: function (res) {
    ctxBackground.drawImage(res.path, 0, 0, 256, 191);
    ctxBackground.restore();
    ctxBackground.draw();
   }
  })
 }

总结

以上所述是小编给大家介绍的微信小程序canvas截取任意形状的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
Apr 16 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
微信小程序如何实现在线客服功能
Oct 16 Javascript
javascript实现前端成语点击验证
Jun 24 Javascript
在webstorm中配置less的方法详解
Sep 25 Javascript
js实现列表向上无限滚动
Jan 13 #Javascript
vue 组件销毁并重置的实现
Jan 13 #Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 #Javascript
微信小程序聊天功能的示例代码
Jan 13 #Javascript
js实现适配移动端的拖动效果
Jan 13 #Javascript
Vue 嵌套路由使用总结(推荐)
Jan 13 #Javascript
优化Vue中date format的性能详解
Jan 13 #Javascript
You might like
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
python异步存储数据详解
2019/03/19 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
职专应届生求职信
2013/11/16 职场文书
园林施工员岗位职责
2013/12/11 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
机修工工作职责
2014/02/21 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
2014年教研工作总结
2014/12/06 职场文书
会计专业求职信范文
2015/03/19 职场文书
客户付款通知书
2015/04/23 职场文书
家长会主持词开场白
2015/05/29 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书