用dojo绘制的线不会显示在IE8中

时间:2012-01-15 16:26:14

标签: internet-explorer dojo line

我正在使用dojo 1.6并在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)

使用此类路径和笔划,线条无法显示。 但如果我对路径或笔画变量进行了多次更改,则该行显示良好。请参阅以下内容:

  1. 在storke变量中将宽度修改为1
  2. 或修改路径变量中的最后一个“L249 120”到“L249.5 120”(更改x),但249-249.4不起作用
  3. 或修改路径变量中的最后一个“L249 120”到“L249 120.5”(更改y),但120.1 - 120.4不起作用
  4. 如果您想尝试一下,请在dojo-release-1.6.1-src\dojox\gfx\tests\test_setPath.html中使用上述路径和笔划。 (下载dojo sdk文件)。

    我不确定这是一个错误还是我做错了什么。 有人可以就如何避免这样的问题给我一些建议吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

IE / VML不支持小数坐标---它们通常是四舍五入的。这解释了你的#2和#3。这种转换为整数发生在应用任何变换之前,因此无法用放大率进行修复。

至于消失的线 - 我以前看过这个问题,我认为它不会很快或永远固定下来 - 很久以前VML是由MS封装的。尝试调整坐标,例如,将它们乘以1.5,2,10或其他数字,然后使用转换将其缩小到适当的大小 - 它帮助了我。