Solution de contournement de bogue en demi-cercle de toile dans Chrome
-
28-10-2019 - |
Question
Il semble que quelqu'un ait mentionné ce bogue sur les forums Chromium, mais il n'y a pas eu de résolution, donc je me demande si quelqu'un connaît simplement une solution de contournement.
Le problème consiste à essayer de rendre un demi-cercle dans le sens antihoraire dans Chrome, à l'aide de l'élément canvas.Au lieu de cela, cela donne un cercle complet:
var ctx = document.getElementById('can').getContext('2d');
ctx.beginPath();
ctx.arc(50,50,50,0,Math.PI*3,true);
ctx.fill();
ctx.closePath();
Voici un violon, vue en non-chrome, puis en chrome: violon
La solution
Le bogue provient probablement de cette partie de la spécification :
Si l'argument anti-horaire est omis ou faux et endAngle-startAngle est égal ou supérieur à 2π, ou, si le l'argument anti-horaire est vrai et startAngle-endAngle est égal à ou supérieur à 2π, alors l'arc est la circonférence entière de ce cercle.
Chrome ne semble pas respecter la deuxième partie de cette déclaration (c'est-à-dire lorsque anticlockwise
est true
).
Pourquoi ne pas normaliser votre point final?
var end = 3 * Math.PI;
while (end > 2 * Math.PI) {
end -= 2 * Math.PI;
}