想在页面显示一个太极,但最终效果与自己想的不一致,如图
HTML侧只有一个canvas标签,设置了样式,JS源代码如下:
// 【1.获取画布节点】
let cavEle = document.querySelector('canvas');
//【2.获取绘制图形的上下文,同时创建画笔】
let pen = cavEle.getContext('2d');
//【太极圆】
// 右外圆
let Pai = Math.PI;
pen.beginPath();
pen.arc(200,200,160,Pai/180*270,Pai/180*450);
pen.stroke();
pen.fillStyle="white";//颜色
pen.fill();
// 上圆弧
pen.beginPath();
pen.arc(200,120,80,Pai/180*90,Pai/180*270,true);
pen.fillStyle="black";
pen.fill();
//上圆心
pen.beginPath();
pen.arc(200,120,30,0,2*Pai);
pen.fillStyle="white";
pen.fill();
// 左外圆
pen.beginPath();
pen.arc(200,200,160,Pai/180*90,Pai/180*270);
pen.stroke();
pen.fillStyle="black";//颜色
pen.fill();
//下圆弧
pen.beginPath();
pen.arc(200,280,80,Pai/180*270,Pai/180*450,true);
pen.fillStyle="white";
pen.fill();
//下圆心
pen.beginPath();
pen.arc(200,280,30,0,2*Pai);
pen.fillStyle="black";
pen.fill();
最开始检查以为是上圆心原本就只有一半的圆,但最终检查结果为上圆心是完整的圆,但只显示一半,即,上圆心的另一半,被上半部分的圆遮挡住了,但不知道原因,想问下大家有没有能给我解惑一下的,万分感谢!
注:下圆心与上圆心书写格式一致,但下圆心是完整的,但上圆心只有一半
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="canvas" height="800" width="800"></canvas>
<script>
// 【1.获取画布节点】
let cavEle = document.querySelector('canvas');
//【2.获取绘制图形的上下文,同时创建画笔】
let pen = cavEle.getContext('2d');
//【太极圆】
// 右外圆
let Pai = Math.PI;
pen.beginPath();
pen.arc(200,200,160,Pai/180*270,Pai/180*450);
pen.stroke();
pen.fillStyle="white";//颜色
pen.fill();
// 上圆弧
pen.beginPath();
pen.arc(200,120,80,Pai/180*90,Pai/180*270,true);
pen.fillStyle="black";
pen.fill();
// 左外圆
pen.beginPath();
pen.arc(200,200,160,Pai/180*90,Pai/180*270);
pen.stroke();
pen.fillStyle="black";//颜色
pen.fill();
//下圆弧
pen.beginPath();
pen.arc(200,280,80,Pai/180*270,Pai/180*450,true);
pen.fillStyle="white";
pen.fill();
//上圆心
pen.beginPath();
pen.arc(200,120,30,0,2*Pai);
pen.fillStyle="white";
pen.fill();
//下圆心
pen.beginPath();
pen.arc(200,280,30,0,2*Pai);
pen.fillStyle="black";
pen.fill();
</script>
</body>
</html>
如有帮助请采纳,谢谢。
<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas" width="600" height="400" style="background-color: #EED2EE; ">
</canvas>
<script type="text/javascript">
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
//绘制左侧的白色半圆直径都是150
cxt.fillStyle = "#FFFFFF";
cxt.beginPath();
cxt.arc(300, 200, 150, 1.5 * Math.PI, Math.PI / 2, false);
cxt.closePath();
cxt.fill();
//绘制右侧的黑色半圆
cxt.fillStyle = "#000000";
cxt.beginPath();
cxt.arc(300, 200, 150, Math.PI / 2, 1.5 * Math.PI, false);
cxt.closePath();
cxt.fill();
//绘制下面的黑色圆
cxt.fillStyle = "#000000";
cxt.beginPath();
cxt.arc(300, 275, 75, 0, 2 * Math.PI, false);
cxt.closePath();
cxt.fill();
//绘制上面的白色圆
cxt.fillStyle = "#FFFFFF";
cxt.beginPath();
cxt.arc(300, 125, 75, 0, 2 * Math.PI, false);
cxt.closePath();
cxt.fill();
//绘制两个小圆
cxt.fillStyle = "FFFFFF";
cxt.beginPath();
cxt.arc(300, 275, 10, 0, 2 * Math.PI, false);
cxt.closePath();
cxt.fill();
//绘制黑色小圆
cxt.fillStyle = "#000";
cxt.beginPath();
cxt.arc(300, 125, 10, 0, 2 * Math.PI, false);
cxt.closePath();
cxt.fill();
</script>
</body>
</html>
这是我写的太极,希望能给你启发,万望采纳
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas绘画太极图</title>
</head>
<body>
<canvas id="canvas" width="800" height="800"></canvas>
<!--结合js使用
使用方法:
1.得到画布对象
2.以2d方式绘制 -->
<script type="text/javascript">
//绘制圆形
// arc(x, y, radius, startAngle, endAngle, anticlockwise)
//x坐标,y坐标,半径,起始位置,结束位置,方向,(顺时针false,逆时针true)
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
//外轮廓 左半圆白
context.beginPath();
context.arc(400, 400, 300, Math.PI*0.5, Math.PI*1.5);
context.fillStyle = "#FFF";
context.fill();
//外轮廓 左半圆黑
context.beginPath();
context.arc(400, 400, 300, Math.PI*1.5, Math.PI*0.5);
context.fillStyle = "#000";
context.fill();
//上半圆 黑
context.beginPath();
context.arc(400, 250, 150, Math.PI*0.5, Math.PI*1.5);
context.fillStyle = "#000";
context.fill();
//下半圆 白
context.beginPath();
context.arc(400, 550, 150, Math.PI*1.5, Math.PI*0.5);
context.fillStyle = "#FFF";
context.fill();
//上实心圆 白
context.beginPath();
context.arc(400, 250, 50, 0, Math.PI*2);
context.fillStyle = "#FFF";
context.fill();
//下实心圆 黑
context.beginPath();
context.arc(400, 550, 50, 0, Math.PI*2);
context.fillStyle = "#000"; //填充样式
context.fill(); //绘制填充
//优化 整体边框 黑
context.beginPath();
context.arc(400, 400, 300, 0, Math.PI*2);
context.strokeStyle="#000"; //边框样式
context.lineWidth = 2; //设置线条粗细为2px
context.stroke(); //边框绘制
</script>
</body>
</html>
如有帮助,望采纳,谢谢
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632