2012-01-15 26 views
0

dojo 1.6を使用していて、IE8でサーフェスを塗りつぶすための奇妙な動作を見つけました。ラインは状況によっては消えてしまいます。ここで は、私が使用(何かを無視する)サンプルコードです:dojoで描かれた線がIE8に表示されない

var surface = dojox.gfx.createSurface("test", 500, 400); 
var path = " M235 216 L240.5 216 M240.5 216 S244.5 216 244.6 212 M244.6 212 " + 
      "L244.5 124 M244.5 124 S244.5 120 248.5 120.1 M248.5 120.1 L249 120"; 
var stroke = { color: "#63E4FF", width: 3}; 
surface.createPath(path).setStroke(stroke) 

なパスとストロークで、行は表示されません。 しかし、パスやストロークの変数をいくつか変更した場合は、線がよく表示されます。 PLS以下参照:

  1. 変更幅1を変数storke
  2. にまたはそれに "L249.5 120" パス変数(変化のX)が、249から249.4 doesnの」最後 "L249 120" を変更トン作業
  3. またはパス変数に「L249 120.5」(チェンジy)に最後の「L249 120」を変更しますが、120.1 - あなたは試しているしたい場合は120.4が

動作しません、 plsはdojo-release-1.6.1-src\dojox\gfx\tests\test_setPath.htmlに上記のパスとストロークを使用します。 (dojo sdkファイルをダウンロードしてください)。

これはバグではないか、私は何か間違っています。 誰も私にそのような問題を避ける方法に関するいくつかのアドバイスを与えることができますか? ありがとうございました。

+0

バグのようです。上に貼り付けたコードは次のとおりです:http://jsfiddle.net/froden/ApLyf/7/ IEは何もレンダリングしていないようです(デベロッパーツールでDOMを見るとVMLはありません)。 ストロークを1に変更すると、動作します:http://jsfiddle.net/froden/ApLyf/ – Frode

答えて

0

IE/VMLは小数点座標をサポートしていません。通常は四捨五入されています。それはあなたの#2と#3を説明します。この変換は、変換が適用される前に行われるため、倍率で固定することはできません。

私はこの問題を以前から見ていましたが、いつでもすぐに修正されるとは思いません--- VMLはMSによって長い間前に缶詰めされています。座標を微調整してみましょう。たとえば、1.5,2,10などの数を乗算し、変換を使用して適切なサイズに戻してください。それは私の助けになりました。

関連する問題