今日看点

用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

相关阅读

《望江南·多少恨》:李煜写于亡国后

文学特点赏析:“多少恨,昨夜梦魂中。”开头陡起,小词中罕见。所“恨”的当然不是“昨夜梦魂中”的情事,而是昨夜这场梦的本身。梦中的情事固然是词人时时眷恋着的,但梦醒后所面对的残酷现实却使他倍感难堪,所以...

2025-08-01

李煜《望江南·多少恨》:古之伤心人

《望江南·多少恨》是五代十国时期南唐后主李煜亡国入宋被囚后创作的一首记梦词。词人以词调名本意回忆江南旧游,抒写了梦中重温旧时游娱生活的欢乐和梦醒之后的悲恨,以梦中的乐景抒写现实生活中的哀情,表达对故国...

2025-08-01

李煜《蝶恋花·春暮》全文赏析

蝶恋花·春暮作者:李煜遥夜亭皋闲信步。才过清明,渐觉伤春暮。数点雨声风约住。朦胧淡月云来去。桃杏依稀香暗渡。谁在秋千,笑里轻轻语。一寸相思千万绪。人间没个安排处。译文夜间在亭台上踱着步子,不知道为何清...

2025-08-01

《浪淘沙·往事只堪哀》:孤寂凄苦

浪淘沙·往事只堪哀作者:李煜往事只堪哀,对景难排。秋风庭院藓侵阶。一任珠帘闲不卷,终日谁来。金锁已沉埋,壮气蒿莱。晚凉天净月华开。想得玉楼瑶殿影,空照秦淮。译文往事回想起来,只令人徒增哀叹;即便面对多...

2025-08-01

李煜和大周后的爱情故事

周娥皇出生在五代十国时期的南唐,自幼容貌出众,加之父母的悉心教导,很快便是远近闻名的才女。周娥皇十九岁时,嫁给当时的吴王李煜,这李煜也是性情中人,文采风流,两人也算是知音,后来李煜登基后,册封周娥皇为...

2025-08-01

李煜《长相思·云一緺》:夜长人奈何

《长相思·云一緺》是五代十国时期南唐后主李煜前期的词作。此词写女子秋雨长夜中的相思情意,分两片,上下片各十八字,上片刻画女子的形貌情态,下片续写秋夜的环境和女子的心情。长相思·云一緺云一緺,玉一梭,澹...

2025-08-01

《菩萨蛮·蓬莱院闭天台女》译文及创作背景

《菩萨蛮·蓬莱院闭天台女》是五代十国时期南唐词人李煜所写的一首词。词的上片主要写情郎初入少女居处,暗见少女睡态的情景,词的下片写少女醒后与情郎欢会调情的情景。全词写私情幽会但又不涉低级庸俗,写男女欢情...

2025-08-01

《乌夜啼·昨夜风兼雨》

《乌夜啼·昨夜风兼雨》是南唐后主李煜的作品,这首词应是诗人亡国入宋后的作品,借梦境写故国春色,表达了囚居生活中的故国情思和现实痛楚。《乌夜啼·昨夜风兼雨》昨夜风兼雨,帘帏飒飒秋声。烛残漏滴频欹枕,起坐...

2025-08-01

长相思·云一緺:秋夜愁思闺怨词

《长相思·云一緺》文学赏析:这首词是描写一位女子秋夜愁思的闺怨词。“云一緺,玉一梭”两句,分写女子发式、头饰之美,用语清新而形象。“淡淡衫儿薄薄罗”,续写女子淡雅衣着,虽未明写容颜,但这种比喻和衬托却...

2025-08-01

《菩萨蛮·蓬莱院闭天台女》赏析

这首词是写男女私会,男子悄然行至女子的寝所,时间则是在正午。词中所写只是二人相对的一个片刻,女子写得娇羞妩媚,男子写得温柔体贴,一片脉脉深情。首句中“蓬莱”、“天台”的形容,不仅暗寓女子的美貌,也代指...

2025-08-01