我使用的是canvas API,但是当使用CanvasRenderingContext2D.arc(x,y,radius,startAngle,endAngle,counterclockwise)时,它在documentation中提到了以下参数:
x:圆弧中心的水平坐标。
y:弧中心的垂直坐标。
radius:弧的半径。必须为正。
startAngle:弧开始的Angular (以弧度为单位),从x轴正方向开始测量。
endAngle:弧结束的Angular (以弧度表示),从正x轴测量。
逆时针可选:一个可选的布尔值。如果为真,则在起始角和结束角之间逆时针绘制圆弧。默认值为假(顺时针)
我发现,例如,当我设置startAngle为0和endAngle 1.5*MathPI并填充圆时,它会给出一个段,而不是我所期望的圆的3/4。我试图找到一种方法来使用它来使电路的部分不是段,但没有希望。
这是密码
const canvas = document.querySelector('.canvas');
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
};
window.addEventListener('resize', resizeCanvas);
resizeCanvas();
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(200, 200, 50, 0, Math.PI * 3 / 2, false);
ctx.fillStyle = 'red';
ctx.fill();
* {
box-sizing: border-box;
}
body,
html {
margin: 0;
padding: 0;
}
canvas {
position: fixed;
top: 0;
left: 0;
}
<canvas class="canvas"></canvas>
输出x1c 0d1x
我希望输出是一个从0到3/2*PI的3/4圆。我只是想知道如何使用canvas API来实现我的预期输出。
1条答案
按热度按时间jfgube3f1#
当使用
这将在两点之间创建一个弧,如名称所示(ctx.arc),当我们填充形状时:它将连接startAngle点到endAngle点。并填充此形状。
要做一个3/2的圆,我们需要从endAngle到圆心画一条线,然后将路径闭合到起始Angular 。
我们可以这样做:
并且这将具有圆的3/4,如下所示。
一个一个二个一个一个一个三个一个一个一个一个一个四个一个