2013-02-07 71 views
1

IE9 Canvas現在是否支持虛線/虛線?我目前做的非常類似如下的內容:用畫布繪製線條

var CP = window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype; 
if (CP && CP.lineTo){ 
    CP.dashedLine = function(x,y,x2,y2,dashArray){ 
    if (!dashArray) dashArray=[10,5]; 
    if (dashLength==0) dashLength = 0.001; // Hack for Safari 
    var dashCount = dashArray.length; 
    this.moveTo(x, y); 
    var dx = (x2-x), dy = (y2-y); 
    var slope = dy/dx; 
    var distRemaining = Math.sqrt(dx*dx + dy*dy); 
    var dashIndex=0, draw=true; 
    while (distRemaining>=0.1){ 
     var dashLength = dashArray[dashIndex++%dashCount]; 
     if (dashLength > distRemaining) dashLength = distRemaining; 
     var xStep = Math.sqrt(dashLength*dashLength/(1 + slope*slope)); 
     if (dx<0) xStep = -xStep; 
     x += xStep 
     y += slope*xStep; 
     this[draw ? 'lineTo' : 'moveTo'](x,y); 
     distRemaining -= dashLength; 
     draw = !draw; 
    } 
    } 
} 

從發現:override line stroke in canvas for dashed/dotted lines

這在IE7,IE8,IE9兼容模式和Firefox的偉大工程,但是,在IE9和Chrome,紮實爲每條虛線繪製筆劃。

任何想法爲什麼這可能會發生?

回答

2

還有其他錯誤。它工作得很好,在Chrome:

ctx.beginPath(); 
ctx.dashedLine(10,10, 100, 100,[4, 4]) 
ctx.stroke(); 

http://jsfiddle.net/MPg5X/1/

+0

發現了這個問題。感謝您的迴應:) – BigBug