微信小程序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取request值以及自动执行使用示例
Feb 24 Javascript
多个$(document).ready()的执行顺序实例分析
Jul 26 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
javascript insertAfter()定义与用法示例
Jul 25 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
聊聊Vue.js的template编译的问题
Oct 09 Javascript
Angular整合zTree的示例代码
Jan 24 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
Jun 11 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 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环境――Appserv
2006/12/13 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
php计算一个文件大小的方法
2015/03/30 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
python测试驱动开发实例
2014/10/08 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
应届毕业生求职信范文
2014/07/07 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
会计求职自荐信范文
2015/03/04 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
Spring 使用注解开发
2022/05/20 Java/Android