微信小程序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 相关文章推荐
javascript下过滤数组重复值的代码
Sep 10 Javascript
基于jquery的direction图片渐变动画效果
May 24 Javascript
基于jquery的大众点评,分类导航实现代码
Aug 23 Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
将查询条件的input、select清空
Jan 14 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
Nov 28 Javascript
jQuery实现dialog设置focus焦点的方法
Jun 10 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
解决vue v-for src 图片路径问题 404
Nov 12 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
基于mysql的bbs设计(四)
2006/10/09 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python读取和保存图片5种方法对比
2018/09/12 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
教师专业理论水平的自我评价分享
2013/11/09 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2015新学期开学寄语
2015/02/26 职场文书