微信小程序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程序中美元符号$是什么
Jun 05 Javascript
Jquery 插件开发笔记整理
Jan 17 Javascript
javascript 学习笔记(八)javascript对象
Apr 12 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
JavaScript内存泄漏的处理方式
Nov 20 Javascript
vue组件与复用详解
Apr 08 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
新手简单了解vue
May 29 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
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设计模式 Bridge (桥接模式)
2011/06/26 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
谈谈JS中的!!
2017/12/07 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
基于python的字节编译详解
2017/09/20 Python
python中import reload __import__的区别详解
2017/10/16 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
Python实现Kmeans聚类算法
2020/06/10 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python理解递归的方法总结
2019/01/28 Python
python实现微信防撤回神器
2019/04/29 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Python之字典对象的几种创建方法
2020/09/30 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
什么是类的返射机制
2016/02/06 面试题
临床医学应届生求职信
2013/11/06 职场文书
处级干部考察材料
2014/12/24 职场文书
销售员自我评价
2015/03/11 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
Python Pandas 删除列操作
2022/03/16 Python