canvas初学 半动态画太极图
可直接复制粘贴运行
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>canvas</title>
</head>
<body>
<canvas width="1000" height="1000" id="mycvs">当前浏览器不支持此控件,请更换或更新浏览器</canvas>
<script type="text/javascript">
var a = document.getElementById("mycvs");
var can = a.getContext("2d");
var beginx = -(1 / 2 * Math.PI);//起始值
var r = 150;
var sidex = 1 * (Math.PI / 180);//增加值
var endx = beginx + 2 * Math.PI;//结束值
var bendx = beginx + 2 * Math.PI;
var aendx = beginx + Math.PI;
var tmx = beginx;//当前值
var t = 0;
var rends = function () {
if (tmx + sidex >= endx) {
tmx = beginx;
t = t + 1;
endx = endx - Math.PI;
if (t == 2) {//填充颜色并退出
can.save();
arcs(300, 300, r, beginx, aendx, true, "black");
arcs(300, 225, 75, beginx, aendx,null,"black");
arcs(300, 375, 75, beginx, aendx, true,"white");
arcs(300, 375, 20, beginx, bendx, null, "black");
arcs(300, 225, 20, beginx, bendx, null, "white");
return;
}
} else {
tmx += sidex;
}
can.clearRect(0, 0, 1000, 1000);//用clearRect()函数使图像更加清晰 也造成一笔结束后上一笔清除了
can.lineWidth = 5;
if (t == 0)
{
can.beginPath();
can.arc(300, 300, r, beginx, tmx);
can.stroke();
} else if (t == 1) {
can.beginPath();
can.arc(300, 300, r, beginx, bendx);//所以在这里我又重新画了一遍外圆
can.arc(300, 225, 75, beginx, tmx);
can.arc(300, 375, 75, beginx, tmx, true);
can.stroke();
}
requestAnimationFrame(rends);//这个是动画控制
};
function arcs(x,y,r,begin,end,f,color) {//圆心(x,y),半径r,起始值begin,结束值end,方向f,填充颜色color
can.beginPath();
can.fillStyle = color;
can.arc(x, y, r, begin, end,f);
can.fill();
can.stroke();
}
rends();
</script>
</body>
</html>
这个代码有点冗余,初学者请多多指教谢谢。
canvas初学 半动态画太极图的更多相关文章
- canvas游戏小试:画一个按方向键移动的圆点
canvas游戏小试:画一个按方向键移动的圆点 自己对canvas,但又有一颗做游戏的心TT.然后记录一下对canvas的学习吧,用一个按方向键控制的小圆点来做练习.(编程时用了一些es6的语法) ...
- Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏
Vue+WebSocket+ES6+Canvas 制作「你画我猜」小游戏 转载 来源:jrainlau 链接:https://segmentfault.com/a/1190000005804860 项 ...
- OpenGL进阶演示样例1——动态画线(虚线、实线、颜色、速度等)
用OpenGL动态绘制线段.事实上非常easy,但到如今为止.网上可參考资料并不多. 于是亲自己主动手写一个函数,方便动态绘制线段.代码例如以下: #include<GL/glu ...
- ARCGIS动态画点
小马哥淡定 原文 ARCGIS动态画点 private void DrawPointOnMap(double x, double y,bool clear) { IMapControl2 pMapCt ...
- linux C 内存管理方式之半动态
看到半动态申请内存,第一反应这是什么鬼? 实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现 #include <stdlib.h> void *alloca (si ...
- canvas 动态画线
<!--实现鼠标按下的时候,移动进行绘制,鼠标抬起结束绘图,用到的事件有mousedown mousemove mouseup用的的canvas api 有 beginPath moveTo l ...
- 第五讲:使用html5中的canvas动态画出物理学上平抛运动
<html> <head> <title>平抛运动</title> <script src="../js/jscex.jscexRequ ...
- html5使用canvas动态画医学设备毫秒级数据波形图
- Android -- 自定义View小Demo,动态画圆(一)
1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...
随机推荐
- React Native学习(九)—— 使用Flexbox布局
本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...
- 快速搭建ssm框架
快速搭建SSM框架 因为最近有很多朋友问我自己的项目搭建的不够完善,并且经常出现一些小问题,那么今天我又整理了一下文档教大家如何快速搭建SSM框架我是用 eclipse搭建的,如果想用idear的话我 ...
- SpringBoot的重要特性
一.Web特性 Spring Boot 提供了spring-boot-starter-web来为Web开发予以支持,spring-boot-starter-web为我们提供了嵌入的Tomcat以及Sp ...
- vi和vim编辑器
VI vi是一种计算机文本编辑器,由美国计算机科学家比尔·乔伊(Bill Joy)完成编写,并于1976年以BSD协议授权发布. VIM Vim是从vi发展出来的一个文本编辑器.其代码补完.编译及错误 ...
- TSQL:判定一段数组连续的数字段有多少的方案
给定了一列数字,需要判定该列中连续的数据字有多少条记录: field1,field2 , , , , , create table tbl( field1 int, field2 int ) ,); ...
- ios11,弹出层内的input框光标错位 键盘弹出时,输入信息,光标一直乱跳
之前开发了一个微信项目,维护期中苹果手机突然出现光标错位现象,经过排查,发现是最新的ios11系统的锅. 具体情况:弹出层使用position: fixed:弹出层内附带input/textare ...
- C#之PixturBox控件实现缩放和拖动图片
一.实现鼠标滚轮控制图片缩放: 1.设置PixtureBox属性: Dock:none SizeMode:StretchImage 2.添加事件: pbxDrawing.MouseWheel += n ...
- [LeetCode] Largest Plus Sign 最大的加型符号
In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except those cells in the given lis ...
- NIO-学习
通道(Channel) 通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区.然后操作缓冲区,对数据进行处理.C ...
- hibernate--hibernate.cfg.xml常用配置详解
在hibernate中最重要的两个配置文件就是hibernate.cfg.xml和xxx.hbm.xml文件,前者是一些配置信息,后者是配置表和对象的映射关系,可以通过注解的方式来取代. 本篇文章主要 ...