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 相关文章推荐
分享8款纯CSS3实现的搜索框功能
Sep 14 HTML / CSS
CSS3结构性伪类选择器九种写法
Apr 18 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
Jan 27 HTML / CSS
css3加js做一个简单的3D行星运转效果实例代码
Jan 18 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
May 07 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
Mar 25 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
Aug 31 HTML / CSS
html5触摸事件判断滑动方向的实现
Jun 05 HTML / CSS
HTML5+CSS3应用详解
Feb 24 HTML / CSS
html5中的input新属性range使用记录
Sep 05 HTML / CSS
HTML5实现签到 功能
Oct 09 HTML / CSS
html5简介及新增功能介绍
May 18 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(5) 类和对象
2010/02/16 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
python中__call__内置函数用法实例
2015/06/04 Python
Python多进程写入同一文件的方法
2019/01/14 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
python selenium firefox使用详解
2019/02/26 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
法制宣传标语
2014/06/23 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
小学科学教学计划
2015/01/21 职场文书
皇城相府导游词
2015/02/06 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
聊一聊python常用的编程模块
2021/05/14 Python