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对图片照片进行边缘模糊处理的实现
Aug 08 HTML / CSS
用css3制作纸张效果(外翻卷角)
Feb 01 HTML / CSS
CSS的pointer-events属性详细介绍(作用和注意事项)
Apr 23 HTML / CSS
CSS3 边框效果
Nov 04 HTML / CSS
用HTML5.0制作网页的教程
May 30 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
Jan 31 HTML / CSS
HTML5中div、article、section的区别及使用介绍
Aug 14 HTML / CSS
html5简单示例_动力节点Java学院整理
Jul 07 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
Jan 03 HTML / CSS
做一个能自适应高度的textarea的示例代码
Sep 06 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
May 19 HTML / CSS
canvas版人体时钟的实现示例
Jan 29 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
计数器详细设计
2006/10/09 PHP
一个程序下载的管理程序(二)
2006/10/09 PHP
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
浅析Python中的多重继承
2015/04/28 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
Python语言进阶知识点总结
2019/05/28 Python
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
失业者真诚求职信范文
2013/12/25 职场文书
高中校园广播稿
2014/01/11 职场文书
材料会计岗位职责
2014/03/06 职场文书
活动总结模板
2014/05/09 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
运动会闭幕词
2015/01/28 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书