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);
  };


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

相关文章
|
11天前
|
移动开发 前端开发 JavaScript
HTML5 Canvas实现360度全景图
HTML5 Canvas实现360度全景图
9 1
|
11天前
|
移动开发 前端开发 JavaScript
浏览器端图表渲染技术SVG, VML HTML Canvas
浏览器端图表渲染技术SVG, VML HTML Canvas
10 0
|
11天前
|
移动开发 前端开发 JavaScript
纯HTML5 Canvas实现的饼图
纯HTML5 Canvas实现的饼图
15 6
|
11天前
|
移动开发 前端开发 HTML5
HTML5 Canvas中实现绘制一个像素宽的细线
HTML5 Canvas中实现绘制一个像素宽的细线
12 3
|
11天前
|
移动开发 前端开发 JavaScript
HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
12 3
|
Web App开发 移动开发 前端开发
微信小程序的组件用法与传统HTML5标签的区别
小程序与传统HTML5的区别 小程序刚开放公测,互联网圈内开始了各种解读和猜测。其中有观点认为小程序和HTML5有着紧密关联,甚至小程序就是基于HTML5开发。
1607 0
|
3天前
|
XML 前端开发 JavaScript
前端简介(HTML+CSS+JS)
前端简介(HTML+CSS+JS)
|
4天前
|
缓存 前端开发 JavaScript
从HTML、CSS以及其他方面介绍一些移动端网页性能优化的策略
【6月更文挑战第14天】本文探讨了移动端网页性能优化的重要性,并提出了HTML、CSS及其他方面的优化策略。HTML方面,建议精简结构、使用语义化标签、异步加载脚本和压缩文件。CSS优化包括简化样式、利用CSS3动画、媒体查询及压缩文件。其他策略涉及图片和字体优化、缓存利用、压缩传输数据、减少HTTP请求及监听网络状态。通过这些方法,可提升网页性能,改善用户体验。
10 1
|
4天前
|
缓存 移动开发 前端开发
在PWA的开发中,HTML与CSS作为前端技术的基础,发挥着至关重要的作用
【6月更文挑战第14天】PWA(渐进式网页应用)借助HTML和CSS,提供接近原生应用的体验。HTML构建页面结构和内容,响应式设计适应各种设备,语义化标签提升可访问性,Manifest文件配置应用元数据,离线页面保证无网时体验。CSS则用于定制主题样式,创建动画效果,实现响应式布局,并管理字体和图标。两者协同工作,确保PWA在不同环境下的优秀性能和用户体验。随着前端技术进步,HTML与CSS在PWA中的应用将更加深入。
17 2
|
6天前
|
前端开发 数据安全/隐私保护
紫色渐变登陆布局html+css代码
这是一段关于网页设计的代码示例,使用纯CSS实现了登录界面的样式。HTML部分包括一个简单的登录表单,包含用户名、密码输入框和登录、注册按钮。CSS部分则定义了各种元素的样式,如背景色、边框、字体颜色等,并使用渐变效果和过渡动画来增强视觉效果。整个设计采用了响应式布局,适应不同设备的屏幕宽度。
15 0