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实现一个div设置多张背景图片及background-image属性实例演示
Aug 10 HTML / CSS
css3实现图片遮罩效果鼠标hover以后出现文字
Nov 05 HTML / CSS
HTML5 video视频字幕的使用和制作方法
May 03 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
Mar 28 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 HTML / CSS
HTML5 语义化结构化规范化
Oct 17 HTML / CSS
如何使用html5与css3完成google涂鸦动画
Dec 16 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
Jan 31 HTML / CSS
HTML5的一个显示电池状态的API简介
Jun 18 HTML / CSS
使用html5 canvas绘制圆环动效
Jun 03 HTML / CSS
css实现文章分割线样式的多种方法总结
Apr 21 HTML / CSS
HTML+CSS 实现顶部导航栏菜单制作
Jun 03 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书写安全的脚本代码
2012/02/05 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
python中常用的九种预处理方法分享
2016/09/11 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python @property原理解析和用法实例
2020/02/11 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
一份比较全的PHP面试题
2016/07/29 面试题
护理学毕业生自荐信
2013/10/02 职场文书
安全生产投入制度
2014/01/29 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
企业宣传标语
2014/06/09 职场文书
校长创先争优承诺书
2014/08/30 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2016大一新生军训感言
2015/12/08 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Golang中interface{}转为数组的操作
2021/04/30 Golang
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL