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 相关文章推荐
使用JS+CSS3技术:让你的名字动起来
Apr 27 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
Jun 04 HTML / CSS
纯css3实现的鼠标悬停动画按钮
Dec 23 HTML / CSS
CSS3实现可翻转的hover效果
May 23 HTML / CSS
详解如何在css3打包后自动追加前缀插件:autoprefixer
Dec 18 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
Apr 28 HTML / CSS
Canvas 文本转粒子效果的实现代码
Feb 14 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
Sep 02 HTML / CSS
使用HTML5 Canvas API控制字体的显示与渲染的方法
Mar 24 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
Dec 15 HTML / CSS
Html5饼图绘制实现统计图的方法
Aug 05 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
PHP开发框架总结收藏
2008/04/24 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
Python模拟登录12306的方法
2014/12/30 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Python语言进阶知识点总结
2019/05/28 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python中rb含义理解
2020/06/18 Python
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
市级文明单位申报材料
2014/05/07 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
公司职员入党自传书
2015/06/26 职场文书
协议书格式模板
2016/03/24 职场文书
golang import自定义包方式
2021/04/29 Golang
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
JavaScript实现简单计时器
2021/06/22 Javascript
java代码实现空间切割
2022/01/18 Java/Android