今日看点

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

发表于话题:解读八卦图
发布时间:2021-05-11

用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(x坐标,y坐标,半径, 0, Math.PI*2);

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

arc(x坐标,y坐标,半径, Math.PI*0.5, Math.PI*1.5);

太极图的构思

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

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
总结:会不代表会讲的出来,讲的出来不一定写的出来。第一次写博客,需要锻炼的还很多。加油!

标签组:[context] [canvas] [canvas元素

本文来源:https://www.kandian5.com/articles/9257.html

相关阅读

宋理宗聪明绝顶为什么选了一个白痴当太子

赵禥是南宋第六位皇帝,即宋度宗,他在位十年,毫无作为,整日吃喝玩乐,于1274年病死,他虽然不是南宋的亡国之君,但却是南宋亡国的罪人!更让人意想不到的是,赵禥是个弱智!根据史书记载,赵禥的父亲是荣王赵...

2025-09-12

特洛伊战争为什么要围城九年

英雄们聚集在奥利斯港湾(Aulis),军队人数有十万人,船数一千一百八十六。出发前大家都在岸边祭坛作献祭,忽然间祭坛下面爬出了一条血红的怪蛇,它弯曲成环状爬上了树,爬到树最高处的一个鸟巢,吃了一只雌鸟...

2025-09-12

鱼玄机是被丈夫骗进道观的吗

鱼玄机出生在长安,当时的大唐国都。生逢盛世,但是家世早衰,鱼玄机出生时,家境已经十分贫寒。她的父亲虽然读过几年书,腹中有些墨水,但是仕途很不顺遂,只能将自己的全部期望寄托在女儿身上。当时鱼玄机还叫做鱼...

2025-09-12

特洛伊战争一共持续几年

特洛伊战争是发生在古希腊的一次战争,发生的地点是现在地中海附近。这场战争的导火索普遍认为是美女海伦,为了抢夺一个名叫海伦的绝世美女,斯巴达王与帕里斯短兵相接。但是有学者推测,这场战事其实是一场盟军对抗...

2025-09-12

荸荠不能生吃吗

姜片虫感染还是挺麻烦的,轻则肠炎腹泻,重则贫血浮肿,儿童可能出现智力低下,甚至死亡。姜片虫在水生植物上都可能存在,不光荸荠,什么茭白菱角,乃至空心菜等,都要反复清洗,保证做熟再吃。尤其荸荠和菱角,千万...

2025-09-12

西晋公主流落街头被卖去当丫鬟下场是什么

这位公主就是西晋时期的临海公主,她的父亲是司马衷,她出生的时候,八王之乱刚刚结束不久,作为公主原本应该享受富贵的生活,可是没过多久西晋就被灭了。皇室成员纷纷外逃,为了保住性命她也逃出了洛阳。在逃跑的途...

2025-09-12

最惨的和亲公主10岁出嫁三个月后离奇身亡

虽然历史上和亲的公主有许多是宫女顶替的,但送去之后多数的结局并不好,而且有许多年幼的公主,尚未涉足人世间的险恶,就不得不去独自面对他乡的险恶,在历史上曾有一位年仅10岁的公主和亲,可因为生得太美,便被...

2025-09-12

古代被抄家的女子是什么下场

《绣春刀》里所说的,入教坊司当妓女只是其中一种结果,但是,电影中所讲的不一定确切,入了教坊司不一定做妓女。教坊司是干什么的呢?主要负责"朝会宴享,冬至,正旦,进实录,册封,诏进士,告祖庙,祭郊祀,进士...

2025-09-12

晋孝武帝真的因为嘲笑张贵人人老色衰被妃子杀了吗

这一天,晋孝武帝和张贵人一起饮酒作乐,晋孝武帝让张贵人多喝几杯,而张贵人已经喝够了,所以就不喝了,晋孝武帝就跟她开玩笑说:“你都年过三十了,人老色衰了,后宫里比你年轻的美女多着呢,信不信我废掉你,把你...

2025-09-12

特洛伊战争的结局究竟是怎样的

特洛伊战争结局以特洛伊城池化为一片废墟而告终。由于特洛伊城池在宙斯的两个儿子修建下非常牢固,所以易守难攻,迈锡尼士兵攻占十年也未能攻下城池,最终伟大的英雄奥德赛献计,伪装成军队已经离开的样子,让迈锡尼...

2025-09-12