HTML5 Canvas组件绘制太极图案

简介: HTML5 Canvas组件绘制太极图案

一实现思路:


实现原理主要是利用HTML5的Canvas组件提供的path函数功能来绘制圆,首先绘


制两个半圆,分别为黑色和白色,组成一个圆,绘制完成以后再分别绘制一个黑色


和白色的圆在绘制好的黑白圆之内,半径恰好是黑白大圆一半。 最后在绘制好的两


个黑白小圆内分别填充白色和黑色的点,半径大小为10pixel左右。



二程序效果如下:

0_13282538831M5w.png


三关键程序解析:


绘制半圆的程序,其中200,200表示开始绘制圆心点坐标,第三个参数150表示绘制圆的半径


第四个参数表示开始角度,第五个参数表示结束角度,最后一个参数表示是否为顺时针或者逆时针


绘制白色半圆的代码如下:

    ctx.fillStyle="#fff";
    ctx.beginPath(); 
    ctx.arc(200, 200, 150, 1.5*Math.PI, Math.PI/2, false);
    ctx.closePath();
    ctx.fill();

绘制黑色半圆的代码如下:

    ctx.fillStyle="#000";
    ctx.beginPath(); 
    ctx.arc(200, 200, 150, Math.PI/2, 1.5*Math.PI, false);
    ctx.closePath();
    ctx.fill();



在太极图案中添加文字的代码使用了透明处理,Canvas全局透明度设置函数

如下:

    // set transparency value  
    ctx.globalAlpha = 0.2;


绘制文字的代码如下:

    // Draw semi transparent text
    ctx.fillStyle = "#f00";
    ctx.font = "32pt Arial";
    ctx.fillText("Hello", 220, 200);
    ctx.fillText("Canvas", 100, 250);

程序完全JavaScript代码如下:

  window.onload = function() {
    var cvs = document.getElementById("canvas-path");
    ctx = cvs.getContext("2d");
 
    // Create circle, radius = 150
    // start point(x, y), radius, start angle, end angle, boolean antiClockWise
    ctx.fillStyle="#fff";
    ctx.beginPath(); 
    ctx.arc(200, 200, 150, 1.5*Math.PI, Math.PI/2, false);
    ctx.closePath();
    ctx.fill();
    ctx.fillStyle="#000";
    ctx.beginPath(); 
    ctx.arc(200, 200, 150, Math.PI/2, 1.5*Math.PI, false);
    ctx.closePath();
    ctx.fill();
    
    // draw sub circle
    // start point(x, y), radius, start angle, end angle, boolean antiClockWise
    ctx.fillStyle="#000";
    ctx.beginPath(); 
    ctx.arc(200, 275, 75, 0, Math.PI*2, false); 
    ctx.closePath();
    ctx.fill();
    ctx.fillStyle="#fff";
    ctx.beginPath(); 
    ctx.arc(200, 125, 75, 0, Math.PI*2, false);
    ctx.closePath();
    ctx.fill();
    
    // fill black and white point
    ctx.fillStyle="#fff";
    ctx.beginPath(); 
    ctx.arc(200, 275, 10, 0, Math.PI*2, false);
    ctx.closePath();
    ctx.fill();
    ctx.fillStyle="#000";
    ctx.beginPath(); 
    ctx.arc(200, 125, 10, 0, Math.PI*2, false);
    ctx.closePath();
    ctx.fill();
    
    // set transparency value  
    ctx.globalAlpha = 0.2;  
      
    // Draw semi transparent text
    ctx.fillStyle = "#f00";
    ctx.font = "32pt Arial";
    ctx.fillText("Hello", 220, 200);
    ctx.fillText("Canvas", 100, 250);
    ctx.globalAlpha = 1.0; 
    ctx.shadowOffsetX = 2;  
    ctx.shadowOffsetY = 2;  
    ctx.shadowBlur = 2;  
    ctx.shadowColor = "rgba(0, 0, 0, 0.5)";  
    ctx.fillStyle = "#000";
    ctx.font = "20px Times New Roman";
    ctx.fillText("-created by gloomyfish", 100, 30);
  };


我为什么要在插图上加上我的名字,因为发现文章被转载的时候居然没有被标出来!

相关文章
|
3天前
|
移动开发 前端开发 HTML5
基于HTML5+Canvas绘制的鼠标跟随三角形碎片光标动画代码
基于HTML5+Canvas绘制的鼠标跟随三角形碎片光标动画特效代码,很有意思,一团三角形碎片跟随鼠标的移动,不冗长、不笨重,反而有一种很轻盈的感觉,非常不错
46 29
|
1月前
|
Web App开发 移动开发 前端开发
html5 canvas五彩碎纸屑飘落动画特效
h5 canvas飘落纸片动画是一款实现五彩纸屑飘落的背景动画特效,基于canvas绘制的空中飘落的纸屑片动画特效,适用于网页动态背景效果代码。简单使用,欢迎下载!代码适用浏览器:搜狗、360、FireFox(建议)、Chrome、Safari、Opera、傲游、世界之窗,是一款不错的的特效插件,希望大家喜欢!
44 5
|
2月前
|
前端开发
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
31 0
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
|
2月前
|
移动开发 前端开发 HTML5
HTML5 Canvas制作的粒子十秒倒计时源码
一段基于HTML5 Canvas制作的粒子爆炸,十秒数字倒计时,全屏倒计时动画效果,给人一种非常大气的视觉感
43 0
HTML5 Canvas制作的粒子十秒倒计时源码
|
2月前
|
前端开发 JavaScript
Canvas三维变化背景动画HTML源码
Canvas三维变化背景动画HTML源码
37 5
|
移动开发 前端开发 HTML5
HTML5 组件Canvas实现图像灰度化
HTML5发布已经有很长一段时间了,一直以来从来没有仔细的看过,过年刚来随便看看 发现HTML5中的Canvas组件功能是如此的强大,不怪很多牛人预言Flash已死,死不死 不是我要关心的,我关心的Canvas可以很轻松在网页中实现简单相框和图像灰度化。
880 0
|
1天前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
2天前
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
50 33
|
23天前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
97 24

热门文章

最新文章