Обходное решение для полукруглой ошибки Canvas в Chrome - PullRequest
1 голос
/ 05 декабря 2011

Похоже, что кто-то упоминал об этой ошибке на форумах Chromium, но не было никакого разрешения, поэтому мне интересно, знает ли кто-нибудь просто обходной путь.

Проблема состоит в том, чтобы сделать полукруг против часовой стрелкив Chrome, используя элемент canvas.Вместо этого получается полный круг:

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

Вот скрипка, просмотр в не-хроме, затем в хром: скрипка

1 Ответ

2 голосов
/ 05 декабря 2011

Ошибка, вероятно, связана с этой частью спецификации :

Если аргумент против часовой стрелки опущен или равен false, а endAngle-startAngle равен или больше 2π, илиЕсли аргумент против часовой стрелки равен true, а startAngle-endAngle равен или больше 2π, то дуга - это вся окружность этого круга.

Похоже, что Chrome не учитывает вторую часть этого круга.утверждение (т. е. когда anticlockwise равно true).

Почему бы не нормализовать конечную точку?

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