Html5 绘制旋转的太极图

采用Html5+JavaScript在Canvas中绘制旋转的太极图,如下图所示:

具体思路和绘制逻辑,在上图中已有说明,代码如下:

 1 <script type="text/javascript">
 2
 3        //只画边框线,无填充
 4         function bigCircle(ctx,x, y, r, st, end, w,oc) {
 5             ctx.lineWidth = w;
 6             ctx.beginPath();
 7             ctx.arc(x, y, r, st, end, oc);
 8             ctx.closePath();
 9             ctx.stroke();
10         }
11         //有填充,画小圆,x,y表示大圆的圆心,r表示大圆的半径,w表示线宽,oc表示方向,l表示上下,d表示度数
12         function smallCircle(ctx, x, y, r, st, end, w, oc, l,d) {
13             var Angle = d * Math.PI / 180; //偏移角用弧度表示
14             ctx.lineWidth = w;
15             ctx.beginPath();
16             if (l) {
17                 ctx.fillStyle = "black";
18                 ctx.arc(x + (r / 2) * Math.sin(Angle), y - (r / 2) * Math.cos(Angle), r/10, st, end, oc);
19             } else {
20                 ctx.fillStyle = "red";
21                 ctx.arc(x - (r / 2) * Math.sin(Angle), y + (r / 2) * Math.cos(Angle), r/10, st, end, oc);
22             }
23             ctx.closePath();
24             ctx.stroke();
25             ctx.fill();
26         }
27
28         //此函数是画带S形曲线的圆,l表示左右,true表示左,顺时针,false表示右,逆时针
29         //d表示度数
30         function halfCircle(ctx, x, y, r, w, l,d) {
31             ctx.lineWidth = w;
32             if (l) {
33                 ctx.fillStyle = "black";
34             } else {
35                 ctx.fillStyle = "red";
36             }
37             ctx.beginPath();
38             var Angle = d * Math.PI / 180;//偏移角用弧度表示
39
40             ctx.arc(x + (r / 2) * Math.sin(Angle), y - (r / 2) * Math.cos(Angle), r / 2, Math.PI / 2 + Angle, Math.PI * 3 / 2 + Angle, true);
41             ctx.arc(x - (r / 2) * Math.sin(Angle), y + (r / 2) * Math.cos(Angle), r / 2, Math.PI*3 / 2 + Angle, Math.PI / 2 + Angle, true);
42             ctx.arc(x, y, r, Math.PI / 2 + Angle, Math.PI * 3 / 2 + Angle, l); //顺时针,逆时针通过参数判断
43             ctx.closePath();
44             ctx.stroke();
45             ctx.fill();
46         }
47
48         var num = 0;//表示旋转的度数
49         function drawTaichi() {
50             var c = document.getElementById("myCanvas");
51             var ctx = c.getContext("2d");
52             var cX = 200;
53             var cY = 200;
54             var radius = 150;
55             ctx.clearRect(0,0,c.width,c.height);
56             //绘制s线 左
57             halfCircle(ctx, cX, cY, radius, 1, true, num);
58             //右
59             halfCircle(ctx, cX, cY, radius, 1, false, num);
60             //绘制小圆,上
61             smallCircle(ctx, cX, cY, radius, 0, Math.PI * 2, 1, true, true, num);
62             //绘制小圆,下
63             smallCircle(ctx, cX, cY, radius, 0, Math.PI * 2, 1, true, false, num);
64             //绘制外圆
65             bigCircle(ctx, cX, cY, radius, 0, Math.PI * 2, 2, true);
66             ctx.save();
67             num++;
68             num = num % 360;//只有360°,所以大于360,就重新开始
69         }
70
71         window.onload = function () {
72             setInterval(drawTaichi, 200);
73         }
74
75     </script>

时间: 2024-09-30 10:16:42

Html5 绘制旋转的太极图的相关文章

HTML 5:绘制旋转的太极图

HTML: <!DOCTYPE> <html> <head> <meta charset="utf-8" /> <title>Canvas绘制旋转太极</title> </head> <body> <canvas id="face" width="200" height="200"></canvas> <

HTML5 绘制具有颜色和透明度的矩形

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/33341413 一.自定义画笔样式 如果想为形状图上颜色,需要使用以下两个重要的属性. fillStyle : 设置下来所有fill操作的默认颜色. strokeStyle : 设置下来所有stroke操作的默认颜色. 二.绘制具有颜色和透明度的矩形 <!DOCTYPE html> <html> <head> <meta http-equiv=&

HTML5绘制空心的文本

1.设计源码 <!doctype html> <html> <head> <meta charset="utf-8"> <title>HTML5绘制空心的文本</title> <script type="text/javascript"> /** * 绘制空心的文本 */ function drawHollowText() { //找到<canvas>元素 var can

HTML5 绘制图片

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/33344289 一.绘制图像 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本. drawImage(image,x,y) : 在canvas中(x,y)处绘制图片. drawImage(image,x,y,width,height) : 在canvas中(x,y)处绘制图片,并将其缩放到指定的宽度和高度. drawImage(image,source

HTML5图片旋转

HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js-Lite 引擎 使用cocos2d-Js也可以! 第一步: 我们来进行Cocos2dx-Js-Lite来创建工程: 我们只需要拷贝这3个文件到我们的工程更目录文件夹中: 拷贝完之后我们根目录如下: 然后我们在我们webstrom中创建两个路径文件夹res(存放图片资源),src文件夹(存放js代码

html5 canvas旋转

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

C#利用GDI+绘制旋转文字等效果

C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. [csharp] view plaincopy using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D;

html5 绘制类似墙型的背景

最近开发的项目中要使用html5绘制各种虚线包括贝塞尔虚线.圆形虚线.各种虚线段,还包括各种形式的背景墙,截图如下: 从这张图片中可以看出有很多种形式的虚线和背景墙,下面主要介绍一下墙型背景,如下如: 这中背景图有一定的规律,首先应该绘制一个矩形,填充色为蓝色,然后在矩形上面绘制背景墙. 背景墙的绘制步骤如下: 1.绘制横线 2.绘制竖线 3.进行描边 上述三个步骤中不叫麻烦的是绘制竖线,但是如果绘制过下图所示的背景就简单很多了: 这个就是绘制竖线了,设置好的线宽就能看起来很不错了.下面给出绘制

CSS3绘制旋转的太极图案

1.效果布局主要用了用了3个DIV,配合:before.:after利用css3中的圆角(border-radius).阴影(box-shadow)完成. 2.动画效果CSS3中的@keyframes.animation <!doctype html> <html> <head> <meta charset="utf-8"> <title>CSS3绘制旋转的太极图案</title> <style> bo