在使用Cnavas元素画一个五角星时,最难的应该是五角星角的坐标。
首先在Canvas元素中,y轴是向下为正。
由于五角星有五个角,圆为360度,所以角与角之间的距离应该为72度。
此时的五角星的十个点的坐标当成是在内外两个圆上排列。读过高中的同学都应该明白图中标示出来的四个点的坐标是怎样算出来的。由于Canvas元素中y轴向下为正,所以sin的值为负。
然后开始画五角星的顶点,用一个循环就可以:

function drawStar(cxt, R, r, x, y){
//ctx为传入的上下文环境,R为外面大圆的半径,r为内部小圆的半径,x为五角星中心的横坐标,y为五角星中心的纵坐标。
for(var i = 0; i < 5; i ++){
ctx.beginPath();
ctx.fillStyle = “yellow”;
ctx.lineTo( Math.cos((18+i*72)/180*Math.PI)*R+x,
-Math.sin((18+i*72)/180*Math.PI)*R+y
);
ctx.lineTo(Math.cos((54+i*72)/180*Math.PI)*r+x,
-Math.sin((54+i*72)/180*Math.PI)*r+y
);
}
ctx.closePath();
ctx.fill();
}
由于Math.cos(),接受的是弧度值,所以我们需要将角度转换为弧度。即:
弧度值 = 角度/180*π;

切记:当我们要画一个封闭的图形时,beginPath()与closePath(),是必须要有的。
当我们想要让所画的五角星旋转一定的角度时,可以传进一个参数在上面的函数中。

function drawStar(cxt, R, r, x, y, a){
//ctx为传入的上下文环境,R为外面大圆的半径,r为内部小圆的半径,x为五角星中心的横坐标,y为五角星中心的纵坐标。a为旋转的角度
for(var i = 0; i < 5; i ++){
ctx.beginPath();
ctx.fillStyle = “yellow”;
ctx.lineTo( Math.cos((18+i*72-a)/180*Math.PI)*R+x,
-Math.sin((18+i*72-a)/180*Math.PI)*R+y
);
ctx.lineTo(Math.cos((54+i*72-a)/180*Math.PI)*r+x,
-Math.sin((54+i*72-a)/180*Math.PI)*r+y
);
}
ctx.closePath();
ctx.fill();
}
这样可以让所画的五角星有一个旋转角度,不再那么死板了。那么接下来考虑如果要画很多个大小不一的星星怎样画。

案例四、1.使用Canvas画一个五角星相关推荐

  1. canva五角星空html,使用canvas绘制一个五角星

    一.了解canvas canvas 是HTML5新增的元素,用于在网页上绘制图形.但 canvas 只是图形的容器,必须要通过脚本(通常是JavaScript)来绘制图形. 可以通过多种方法使用can ...

  2. python程序、画一个笑脸_如何使用canvas画一个微笑的表情(代码示例)

    本篇文章给大家带来的内容是关于如何使用canvas画一个微笑的表情(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 实习期间让我用canvas画一个表情,比较简单,话不多说 ...

  3. [html] 请使用canvas画一个椭圆

    [html] 请使用canvas画一个椭圆 <script> var c=document.getElementById("myCanvas"); var ctx=c. ...

  4. [html] 请使用canvas画一个渐变的长方形

    [html] 请使用canvas画一个渐变的长方形 // 普通canvas绘图工具类// umd适配多种引入方式 (function(root, factory) {if (typeof define ...

  5. python turtle库画一个五角星 【Python初学 绘制五角星】

    一.常用命令 import turtle #导入turtle库 import time #时间模块 turtle.forward() #向前移动 turtle.right() #顺时针旋转 turtl ...

  6. 五角星具有“胜利”的含义。被很多国家的军队作为军官(尤其是高级军官)的军衔标志使用。也常常运用在旗帜上。我们的国旗上就有五角星。请你也画一个五角星吧。

    五角星具有"胜利"的含义.被很多国家的军队作为军官(尤其是高级军官)的军衔标志使用.也常常运用在旗帜上.我们的国旗上就有五角星.请你也画一个五角星吧. [输入] 无 [输出] * ...

  7. 用canvas画一个太极图(八卦图)

    用canvas画一个太极图(八卦图) 源码展示链接: https://yanhappiness.github.io/Notes/canvas_src.html 理解什么是canvas canvas是H ...

  8. 如何利用canvas画一个圆,并且填充颜色

    如何利用canvas画一个圆,并且填充颜色(小白专用,大佬勿看) canvas基础 相信在此之前,你对canvas已经有一定的了解了,接下来我将介绍,如何利用canvas画一个圆. 1.新建一个htm ...

  9. 用canvas画一个五星红旗

    利用canvas画一个好看的五星红旗!!! 简单,容易上手! <!DOCTYPE html> <html lang="utf-8"> <meta ht ...

最新文章

  1. SQL优化—— 优化order by语句 || Filesort 的优化
  2. Linux统计某个文件夹下的文件个数、目录个数
  3. 睢县第三届芦笋文化节开幕 对话中国农民丰收节交易会
  4. linux和windows中insert语句注意
  5. HDFS体系架构介绍
  6. win10饥荒服务器未响应,win10系统玩饥荒联机很卡如何解决[多图]
  7. eclipse tomcat插件安装
  8. 小学计算机课的评语,小学信息技术评课稿
  9. Struts2学习笔记(四) Action(中)
  10. 开源的数据可视化JavaScript图表库:ECharts
  11. Luyten报错:This application requires a Java Runtime Environment 1.7.0 or 1.8.0
  12. RFID出入库管理是如何实施的
  13. 【转】ESXI 7.0 打包网卡驱动
  14. 快商通董事长肖龙源:逐浪AI大潮,职业教育应紧握机遇,赋能产业
  15. 【汇正财经】企业资本的具体形式
  16. 这世界风华正茂可别辜负好时光
  17. linux(centos) 保存退出vi编辑
  18. WordPress遇到qq邮箱不能注册,不能重置密码问题(您的密码重设链接无效,请在下方请求新链接。)
  19. Python批量获取VOC测试集的类别
  20. Unity + Mirror实现原创卡牌游戏局域网联机

热门文章

  1. Spring中Bean的生命周期以及三级缓存介绍
  2. 中国联通和中国电信如合并要抗衡中国移动需要时间
  3. centos下安装anaconda、scikit-learn、opencv、pytorch 和torchvision(文件在Windows下载好linux版本,使用xshll传到linux)
  4. Linux下的硬盘信息查看
  5. 计算机网络(中科大郑烇)第二章笔记
  6. 求50以内的全部素数
  7. Easypack: Ansible方式部署工具中升级Dashboard至2.0.0版
  8. fcpx如何清除缓存?Final Cut Pro X 清除缓存方法
  9. 【感悟】20岁的人生不应该停止奋斗。----------------努力努力再努力
  10. MATLAB矩阵画法,MATLAB矩阵与数组