微信小程序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 相关文章推荐
jquery异步循环获取功能实现代码
Sep 19 Javascript
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
jQuery.position()方法获取不到值的安全替换方法
Mar 13 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
学习vue.js表单控件绑定操作
Dec 05 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
Sep 11 Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 Javascript
node创建Vue项目步骤详解
Mar 06 Javascript
JS变量提升原理与用法实例浅析
May 22 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
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中的生成器和yield详细介绍
2015/01/09 Python
Python实现LRU算法的2种方法
2015/06/24 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
自学python用什么系统好
2020/06/23 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
SQL中where和having的区别
2012/06/17 面试题
优秀班干部事迹材料
2014/01/26 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
检讨书1000字
2014/10/11 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
结婚典礼主持词
2015/06/29 职场文书
表扬信范文
2019/04/22 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript