Canvas多边形绘制的实现方法


Posted in HTML / CSS onAugust 05, 2019

前言

Canvas绘制多变形非常简单,只要懂得Canvas路径 + 简单的初中数学知识即可完成

Canvas多边形绘制的实现方法

CodePen打开

解析

Canvas多边形绘制的实现方法

思路如上,非常简单,计算每一个点的位置通过lineTo()绘制路径即可

核心代码解析如下(或在CodePen中查看):

function drawPolygonPath(sideNum, radius, originX, originY, ctx){
  ctx.beginPath();
  const unitAngle = Math.PI * 2 / sideNum; //计算单元角度
  let angle = 0; //初始角度
  let xLength, yLength;
  // ctx.moveTo(originX, originY);
  for(let i = 0; i < sideNum; i++){ //遍历计算点,并lineTo()绘制路径
    xLength = radius * Math.cos(angle);
    yLength = radius * Math.sin(angle);
    ctx.lineTo(originX + xLength, originY - yLength);//绘制路径
    angle += unitAngle;
  }
  ctx.closePath();//闭合路径,也可在for循环中多一次循环lineTo()至起点
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
利用CSS3的flexbox实现水平垂直居中与三列等高布局
Sep 12 HTML / CSS
css3实现一个div设置多张背景图片及background-image属性实例演示
Aug 10 HTML / CSS
CSS3教程(10):CSS3 HSL声明设置颜色
Apr 02 HTML / CSS
45个非常奇妙的CSS3 特性应用示例
Jan 01 HTML / CSS
纯CSS实现聊天框小尖角、气泡效果
Apr 04 HTML / CSS
利用CSS3的border-radius绘制太极及爱心图案示例
May 17 HTML / CSS
html5利用canvas绘画二级树形结构图的示例
Sep 27 HTML / CSS
很酷的HTML5电子书翻页动画特效
Feb 25 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
血轮眼轮回眼特效 html+css
Mar 31 HTML / CSS
CSS3鼠标悬浮过渡缩放效果
Apr 17 HTML / CSS
使用canvas对video视频某一刻截图功能
Sep 25 HTML / CSS
使用canvas压缩图片大小的方法示例
Aug 02 #HTML / CSS
HTML5实现移动端弹幕动画效果
Aug 01 #HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
Aug 01 #HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
Aug 01 #HTML / CSS
html5 冒号分隔符对齐的实现
Jul 31 #HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
Jul 31 #HTML / CSS
Canvas图片分割效果的实现
Jul 29 #HTML / CSS
You might like
linux php mysql数据库备份实现代码
2009/03/10 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
php字符串操作常见问题小结
2016/10/11 PHP
php实现的http请求封装示例
2016/11/08 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
使用angular写一个hello world
2015/01/23 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python实现批量图片格式转换
2020/06/16 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
为什么相对PHP黑python的更少
2020/06/21 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
护理不良事件检讨书
2014/02/06 职场文书
《社戏》教学反思
2014/04/15 职场文书
2014年营销工作总结
2014/11/22 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫
我的收音机情缘
2022/04/05 无线电
ipad隐藏软件app图标方法
2022/04/19 数码科技