因此出于某种原因,我可能发誓这是arc
在canvas标签中始终起作用的方式,但不幸的是,事实并非如此。
因此,我期望并最终希望拥有的最终结果是:
canvas.arc(x,y,r,0,360); //ik this should be Math.PI * 2
canvas.arc(x,y,r,0,270); //and other Math.PI * #
canvas.arc(x,y,r,0,180); //But I used degrees to help show
canvas.arc(x,y,r,0,90); //how I'd like it to use it.
它将使这些圈子:
但是不幸的是,当你执行上面的代码时,它的功能有所不同...它可以很好地创建圆的STROKE部分,但将其填充仅会画出一条从起始角度到终止角度的线并将其填充:
我能想到的唯一解决方案是以某种方式将圆弧的填充过程覆盖到,而不是将线填充到另一个角度,首先将线填充到弧的中心,然后再返回到结束角度。但是我不知道该怎么做,而且我也不了解beizers想从头开始重新创建弧,以便使用所需的lineTo用法来重新创建弧。
总结:如何使我的实心圆在部分圆的中心具有实际的“角度”?
画布上的圆圈一开始很难缠住你的头,但是对此有一个相当简单的解决方案:
ctx.lineTo();
问题不在于fill()
方法,而在于如何绘制笔划。
这是我的处理方式:
const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(50, 50, 50, Math.PI, Math.PI * 1.5, false);
ctx.lineTo(50, 50);
ctx.closePath();
ctx.fill();
<canvas width="100" height="100"></canvas>
解释一下,完成圆弧绘制后,只需从曲线的一端到圆心绘制一条直线即可解决问题!这是因为fill方法严格地填充了端点之间的所有内容。从技术上讲,这种将线绘制到中心的方法应可与任何局部圆的变体一起使用。