用canvas画一个太极图(八卦图)

用canvas画一个太极图(八卦图)

太极图

源码展示链接:
https://yanhappiness.github.io/Notes/canvas_src.html

理解什么是canvas

canvas是HTML5新增的标签,用于图形的绘制。通过脚本 (通常是JavaScript)来完成.

如何使用canvas

也就是说canvas只是定义了一块画布,而真正实现路径,盒、圆、字符以及添加图像的绘制是借助于脚本javascript实现的。
首先,找到 元素:

var canvas=document.getElementById("myCanvas");

然后,创建 context 对象:

var ctx=canvas.getContext("2d");
arc() 方法讲解

理解了怎么获取元素以及创建对象之后就可以着手去构思怎么画一个太极图了。
用到的是canvas中的 arc() 方法绘制圆形

arc(x, y, radius, startAngle, endAngle, anticlockwise)

arc的六个参数分别是(x坐标,y坐标,半径,起始位置,结束位置,方向(顺时针false/逆时针true))
里面有两个参数比较难以理解starAngle起始位置和endAngle终止位置,用Math.PI来表示。
PI 属性就是 π,即圆的周长和它的直径之比。这个值近似为 3.14。
下面用一张图来具体说明下:
arc()方法中起始位置图解
举个栗子:
如果想画一个圆形那么:

arc(x坐标,y坐标,半径, 0, Math.PI*2);

如果是想画一个半圆(左半圆)那么:

arc(x坐标,y坐标,半径, Math.PI*0.5, Math.PI*1.5);
太极图的构思

仔细观察可以发现太极图就是由圆或者半圆层叠而成的
下面是部分代码
html部分:新建画布800*800(大小自定)

<canvas id="canvas" width="800" height="800"></canvas>

javascript获取元素部分

    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d"); 

1.先画一个左半圆(白色)

    context.arc(400, 400, 300, Math.PI*0.5, Math.PI*1.5);//圆心在画布正中间,半径为300
    context.fillStyle = "#FFF";//设置实心圆的填充色
    context.fill();//绘制填充

2.画一个右半圆(黑色)

    context.beginPath();//重新绘制,避免继承已设置元素的属性     
    context.arc(400, 400, 300, Math.PI*1.5, Math.PI*0.5);//圆心在画布正中间,半径为300
    context.fillStyle = "#000";//设置实心圆的填充色
    context.fill(); //绘制填充

3.画一个上半圆(黑色)

    context.beginPath();
    context.arc(400, 250, 150, Math.PI*0.5, Math.PI*1.5);
    context.fillStyle = "#000";
    context.fill(); 

4.画一个上实心圆(白色) 3的同心圆半径小于3

    context.beginPath();
    context.arc(400, 250, 50, 0, Math.PI*2);
    context.fillStyle = "#FFF";
    context.fill(); 

5.画一个下半圆(白色)

    context.beginPath();
    context.arc(400, 550, 150, Math.PI*1.5, Math.PI*0.5);
    context.fillStyle = "#FFF";
    context.fill(); 

6.画一个下实心圆(黑色) 5的同心圆半径小于5

    context.beginPath();
    context.arc(400, 550, 50, 0, Math.PI*2);
    context.fillStyle = "#000"; //填充样式
    context.fill();             //绘制填充

7.优化 外圆的整体边框 (黑色)

    context.beginPath();
    context.arc(400, 400, 300, 0, Math.PI*2);
    context.strokeStyle="#000"; //边框样式
    context.lineWidth = 2;  //设置线条粗细为2px
    context.stroke();       //边框绘制

收工!!!

源码下载

https://github.com/YANhappiness/Notes.git
总结:会不代表会讲的出来,讲的出来不一定写的出来。第一次写博客,需要锻炼的还很多。加油!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值