HTML 5:绘制旋转的太极图

HTML:

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

JavaScript:

var canvas = document.getElementById("face");
var cxt = canvas.getContext(‘2d‘);
var r = 100;   //半径
var pointX = 0;  //圆心x坐标
var pointY = 0; //圆心y坐标

 // 绘制扇形填充
 function pie (g,radius,startAngle,endAngle,color,x,y)
 {
     g.fillStyle = color;
     g.beginPath();
     g.arc(x,y,radius,startAngle,endAngle,true);
     g.closePath();
     g.fill();
 }

 var q = 0;
 function redrawTaiji()
 {
     // 保存状态
     cxt.save();
     // 清理图像
     cxt.clearRect(0,0,canvas.width,canvas.height);
     cxt.translate(100,100);
     q += Math.PI / 6;
     cxt.rotate(q);
     cxt.beginPath();
     // 绘制两个最大圆
     pie(cxt,r,3/4*Math.PI*2,5/4*Math.PI*2,"#FF072A",pointX,pointY);
     pie(cxt,r,1/4*Math.PI*2,3/4*Math.PI*2,"#195089",pointX,pointY);
     // 绘制两个中圆
     pie(cxt,r/2,0,Math.PI*2,"#FF072A",pointX,pointY+r/2);
     pie(cxt,r/2,0,Math.PI*2,"#195089",pointX,pointY-r/2);
     // 绘制两个最小圆
     pie(cxt,r/4,0,Math.PI*2,"#FF072A",pointX,pointY-r/2);
     pie(cxt,r/4,0,Math.PI*2,"#195089",pointX,pointY+r/2);
     cxt.closePath();
     // 恢复状态
     cxt.restore();
 }
 function initTaiji()
 {
     redrawTaiji();
     setInterval(redrawTaiji,500);
 }
 initTaiji();

效果:http://jsfiddle.net/Web_Code/88c9d2g2/embedded/result/

原文首发:http://www.ido321.com/1308.html

下一篇:程序员成长道路上必经的几个阶段

时间: 2024-10-04 04:40:04

HTML 5:绘制旋转的太极图的相关文章

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)

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

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

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

CSS3实现旋转的太极图(二):只用1个DIV

效果预览: PS: 1.昨天用3个DIV实现了太极图(点击查看),,今天试着用1个Div来做. 2.公司刚忙过双10周年庆,最近空闲下来,闲着也是闲着,总得写点东西吧. 3.高手莫喷,小弟仅仅是没事折腾一下,做个的记录. 4.有网友反应旋转的时候会卡. 5.IE浏览器,出门左拐.走好不送 ~~~ 实现步骤: HTML: <div class="box-taiji"></div> 步骤一: .box-taiji {width:0;height:400px;posi

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

本文实例讲述了C#利用GDI+绘制旋转文字等效果的方法,是非常实用的技巧.分享给大家供大家参考之用.具体如下: C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. 具体实现代码如下: using System; using System.Collections.Generic; using System

旋转的太极图

最近刚学习canvas,自己做了一个太极图. <!DOCTYPE html> <html> <head> <title>绘制圆形练习</title> <meta charset="utf-8" /> </head> <body> <canvas id="canvas" width="500px" height="300px"&

css3制作旋转的太极图

上代码: ------------------------------------------------------------ <body> <div class="div"></div> <style> body { background-color: #aaa; } .div { width: 400px; height: 400px; border-radius: 50%; border: 1px solid #ddd; bac

CSS实现太极图(3个div实现)

使用三个div实现太极图的步骤如下: HTML部分 <div class="box"> <div class="yin"></div> <div class="yang"></div> </div> 第一步,画一个宽高为300px的圆,并为其加上阴影(为了看起来有立体感) .box{ width:300px; height:300px; margin:50px auto; p

java处理图片--图片的缩放,旋转和马赛克化

这是我自己结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化.(转载请注明出处:http://blog.csdn.net/u012116457) 不多说,上代码: package deal; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.AffineTransform; impo