2011-01-06 24 views
1

我正在使用畫布繪製一個簡單的進度指示器。當元素第一次被繪製時,它看起來很好,並且是反鋸齒的,但是當再次繪製時,它會失去抗鋸齒。任何人都知道這裏會發生什麼?在safari中重新繪製時畫布形狀變爲別名

function drawProgress(id, percent) { 
      var selected = $(safeID(id)).is('.selected'); 

      var canvas = $(safeID("CANVAS_" + id)); 
      var ctx = $(canvas)[0].getContext('2d'); 
      ctx.clearRect(); 

      if (selected) { 
       ctx.fillStyle = "#ffffff"; 
       ctx.strokeStyle = "#ffffff"; 
      } 
      else { 
       ctx.fillStyle = "#99a7ca"; 
       ctx.strokeStyle = "#99a7ca"; 
      } 

      ctx.beginPath(); 
      ctx.arc(canvas.width()/2.0, canvas.height()/2.0, canvas.width()/2.0-1, 0, Math.PI, false); 
      ctx.fill(); 

      ctx.beginPath(); 
      ctx.arc(canvas.width()/2.0, canvas.height()/2.0, canvas.width()/2.0-1, 0, Math.PI*2.0, false); 
      ctx.stroke(); 
     } 

回答

1

您需要指定尺寸至clearRect

+0

大聲笑。我只是注意到,然後衝回來回答。太慢我猜:) – 2011-01-06 02:34:42

+2

我想這可以回答人們關於消除反鋸齒的問題。只需繪製相同的形狀5次,部分Alpha通道的像素將自行填充以顯示別名。 – 2011-01-06 02:40:11