canvas属性中的线条属性学完后,就可以自己写一个简单好看的五角星啦

先是最简单的画布属性的获取

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas</title>
<style>
</style>
</head>
<body>
<canvas id="canvas" width="800" height="800" style="border:solid 1px gray;">您的浏览器不支持canvas,建议使用最新版的Chrome
</canvas>
<script type="text/javascript">
  var canvas=document.getElementById('canvas');
  var ctx=canvas.getContext('2d');</script></body></html>

对于不支持<canvas></canvas>属性的浏览器,上面那段文字就会跳出提示信息。而支持则会忽视上诉文字。

接着就是js部分的编写了

window.οnlοad=function(){drawStar(ctx,200,100,400,400,30);
}function drawStar(cxt,r,R,x,y,rot){cxt.lineWidth=10;cxt.lineJoin="round";cxt.beginPath();for(var i=0; i<=5; i++){cxt.lineTo(Math.cos((18+i*72-rot)/180*Math.PI)*R+x,-Math.sin((18+i*72-rot)/180*Math.PI)*R+y);cxt.lineTo(Math.cos((54+i*72-rot)/180*Math.PI)*r+x,-Math.sin((54+i*72-rot)/180*Math.PI)*r+y);}cxt.closePath();cxt.stroke();
}

上诉代码中,我们写了一个drawStar()的函数,传进了6个参数,分别为:cxt(绘图环境),r(代表小圆半径),R(大圆半径),x(在x轴上的移动量),y(在y轴上的移动量),rot(整个五角星的偏移量)。

cxt.lineWidth:这个属性是线条的宽度。

cxt.lineJoin:这个属性是线条交接处的处理方式。有“bevel”,"round","mitter"三个属性,分别什么样子呢,自己试试吧。其中mitter还有mitterLimit这个属性。canvas给这个属性一个适合值为10,所以如果要用cxt.mitterLimit=10;就这样写啦!

路径开始beginPath(),路径结束closePath();(PS: closePath() 多写有好处,不写也还好,但有时候会有小问题)。

接下来这个for循环就是五角星的绘制。那绘制五角星其实是基于一个同心圆上的,就像这样

lineTo()里面两个参数分别为坐标(x,y),其中需要计算x,y对应的表达式,对于数学都很帮帮的你们来说,小case啦!

最后用两个lineTo()绘制线段,连接起来,用Stroke()画出图形,再调用drawStar()函数就好了。参数不同,五角星也不一样哦!!

转载于:https://www.cnblogs.com/shuixiaohao/p/6618055.html

用canvas属性写一个五角星哦相关推荐

  1. 俄罗斯小方块游戏html,通过h5的canvas手写一个俄罗斯方块小游戏

    开始自己手写一个好玩的俄罗斯方块吧,上变形,左右移动,下加速,空格瞬移等功能,无聊的时候学习下canvas,f12 修改分数,体验金手指的快乐吧 1.定义界面,和按钮 上 下 左 右 2.js部分 1 ...

  2. canvas笔记-画一个五角星(含算法)

    算法如下: 上面的图是正三角形: 说下算法,关于上面那些x,y是怎么算出来的. 这里大圆的5个顶点,每个顶点占用的角度为360/5 = 72度,左边那个18度是通过90 - 72 = 18度. 大圆半 ...

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

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

  4. Day14作业 三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包)

    三.编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包) 写一个测试类:创建一个集合,里面装6个学生(有三个班级class01,class02,class03) 例如:list. ...

  5. [js] 用js写一个方法检测浏览器是否支持css3的属性

    [js] 用js写一个方法检测浏览器是否支持css3的属性 var div = document.createElement('div'); console.log(div.style.transit ...

  6. 写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器), 该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有

    代码 /*开放型题目,随意发挥:写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器),该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限 ...

  7. (一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。(方法的重写)...

    (一).写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight). 再写两个子类: 红猪的类:类中有属性姓名(name),攻击力(attack),颜色(color ...

  8. 怎么画图自动生成HTML,用canvas写一个简易画图工具

    本文将为您描述用canvas写一个简易画图工具,具体操作方法: Document style="border:1px solid #000000;">您的浏览器不支持canv ...

  9. 简单的面向对象思想,写一个传奇人物的属性

    简单的面向对象思想,写一个传奇人物的属性 package com.hz.game;import java.util.Random;/*** //hat,weapon,necklace,ring,clo ...

最新文章

  1. 学习《Linux设备模型浅析之设备篇》笔记(一)
  2. 【Matlab】山地建模?立体热度?怎么绘制三维曲面图?
  3. [导入]较为周全的Asp.net提交验证方案 (下)
  4. 02 JRE与JDK
  5. Linux系统编程——僵尸的模拟以及僵尸进程的预防
  6. flask-01-http通信的回顾
  7. iOS手势学习UIGestureRecognizer cocos2d 手势推荐
  8. 29_海星资讯9月29日报
  9. 使用python 启动一个web服务
  10. codeproject的文章【一】
  11. java cat_java应用监控之CAT简介
  12. 14届数独-真题标准数独-Day 1-20220116
  13. html中什么用来表示特殊字符引号,HTML特殊字符显示
  14. 酒店管理系统/酒店客房管理系统的设计与实现
  15. 9860计算机测量程序,卡西欧9860测量放样程序-绘星
  16. 学习+彭伟《揭秘深度强化学习》PDF+源代码+资料
  17. css中导入自定义字体库
  18. VBA EXCEL 实现图片保存到ACCESS数据库(OLE对象)
  19. android悬浮窗(支持退回桌面后显示)
  20. 部署DHCP服务器与地址耗尽攻击

热门文章

  1. android8.1默认输入法,搜狗输入法安卓V8.1 哪里出错改哪里
  2. 【狂神说】Redis笔记整理
  3. 如何认真的毁掉一个项目?
  4. 如何从数据库中筛选出达成指定里程碑节点的项目_复盘|项目管理实战经验总结...
  5. 导师互选系统 Alpha版冲刺总结
  6. 天天好心情:每天问自己十个问题
  7. 字节、字、bit、byte Mbps的关系
  8. 离婚协议书怎么写?离婚协议书范本2020
  9. 兼容IE浏览器 媒体查询方法
  10. 2011年.NET面试题总结---献给即将找工作的同行们