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 渐变(Gradients)之CSS3 线性渐变
Jul 08 HTML / CSS
CSS3 clip-path 用法介绍详解
Mar 01 HTML / CSS
CSS3中的@keyframes关键帧动画的选择器绑定
Jun 13 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
Jan 04 HTML / CSS
CSS3之transition实现下划线的示例代码
May 30 HTML / CSS
Html5移动端弹幕动画实现示例代码
Aug 27 HTML / CSS
html5 canvas实现圆形时钟代码分享
Dec 25 HTML / CSS
HTML5+CSS3应用详解
Feb 24 HTML / CSS
2014年圣诞节倒计时网页的制作过程
Dec 05 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
Jun 25 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
Apr 14 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
Oct 12 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+java实现自动新闻滚动窗口
2006/10/09 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
php实现可逆加密的方法
2015/08/11 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
jQuery.each使用详解
2015/07/07 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
python基础之入门必看操作
2017/07/26 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
python实发邮件实例详解
2019/11/11 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
python实现超级马里奥
2020/03/18 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
介绍一下OSI七层模型
2012/07/03 面试题
团员的自我评价
2013/12/01 职场文书
11月红领巾广播稿
2014/01/17 职场文书
监察建议书格式
2014/05/19 职场文书
企业安全标语
2014/06/07 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
小程序自定义轮播图圆点组件
2022/06/25 Javascript