2011-12-05 41 views
1

看起來有人在Chromium論壇上提到了這個錯誤,但沒有解決方案,所以我想知道是否有人知道解決方法。Chrome中的Canvas半圈錯誤解決方法

該問題試圖在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(); 

這裏是一個小提琴,鑑於非鉻,然後鉻:fiddle

+2

除非我誤解了你的問題,否則半個逆時針的圓是從'0'到'Math.PI'。您目前正在繪製一個完整的圓圈和另一個半圓形,有效地繪製完整的一個。 – pimvdb

+0

一個很好的解決方法可能是嘗試使用'Math.PI'而不是'Math.PI * 3' - 我知道這很冒險,但它解決了那些高中幾何錯誤。 –

+0

@ pimvdb:不,畫布逆時針方向不對。所有瀏覽器在這種情況下渲染半圈,但Chrome – anson

回答

2

的錯誤可能是由this part of the spec莖:

如果逆時針參數被省略或者爲假,並且 endAngle-startAngle等於或大於2π,或者,如果反時針參數爲true並且startAngle-endAngle等於或者 大於2π,則圓弧是這個圓的整個圓周。

鉻似乎不尊重該聲明的第二部分(即當anticlockwisetrue)。

爲什麼不正常化您的終點?

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

是的,我記得四處搜尋,看到和思考它可能可以做到這一點。感謝您的幫助,我認爲這段代碼將適合我想要做的很好的事情。 – anson

+1

請注意,Chrome已經在31.0.1650.63版本中解決了這個問題(之前可能還有很多版本) –