在Chrome画布半圆错误的解决方案

Canvas half circle bug workaround in Chrome

本文关键字:解决方案 错误 布半圆 Chrome      更新时间:2023-09-26

看起来有人在Chromium论坛上提到了这个bug,但是没有解决方案,所以我想知道是否有人知道一个解决方案。

问题是试图渲染一个半圆逆时针在Chrome中,使用画布元素。相反,这将呈现一个完整的圆:

var ctx = document.getElementById('can').getContext('2d');
ctx.beginPath();
ctx.arc(50,50,50,0,Math.PI*3,true);
ctx.fill();
ctx.closePath();

这是一个小提琴,在非chrome中查看,然后在chrome中:小提琴

这个bug可能源于规范的这一部分:

如果逆时针参数被省略或为false且危及起始角等于或大于2π,如果逆时针角为真并且startAngle-endAngle等于或大于2π,那么弧就是这个的整个周长圆。

Chrome似乎不尊重该声明的第二部分(即当anticlockwisetrue时)。

为什么不规范化你的终点?

var end = 3 * Math.PI;
while (end > 2 * Math.PI) {
    end -= 2 * Math.PI;
}