2013-09-16 27 views
3

我一直在使用D3和SVG显示一系列矩形工作的一个图表库。该数据集支配显示在一个给定区域的矩形的数量,在大多数情况下,数学不工作了干净,这意味着该矩形不启动和整数结束。 Firefox,Chrome和Safari都通过对矩形进行抗锯齿处理来应对这种意外情况。 IE似乎只是绕到最接近的像素值,并拒绝任何逆矩阵元素的抗锯齿。我尝试过改变形状渲染等,但都无济于事。IE10 SVG实现拒绝抗锯齿<rect>元素?

下面是IE10的相同数据的侧方比较和最新的Chrome发布:

IE10:

enter image description here

铬:

enter image description here

有没有人知道这个修复不涉及改变SVG标记的结构?设置CSS属性或标签属性优于更改元素本身。除此之外,有没有人看过任何微软文档解释这个决定的理由?到目前为止,我还没有能够出现。

+0

你的图像看起来一模一样。 –

+1

他们显示的数据相同,但其中一个在Chrome中呈现,另一个在IE10中呈现。 Chrome渲染中的所有条纹均应看起来均匀且均匀间隔,并具有反锯齿边缘。 IE渲染中的边缘应该有锐利的边缘,没有局部的透明度,列间距不均匀,右边第四列只有其他的一半。 如果知道,他们_still_看起来完全一样,那么就有_really_奇怪的是怎么回事... – orochi235

+0

哦,对了,现在我明白了。抗锯齿的行为没有规定,因此这些决定都是非常的平台/浏览器特定的,并在底层本地图形库的水平发生(也可产品不同的结果取决于GPU与CPU渲染)。通常使用crispEdges会在每个平台上为您提供非反锯齿结果。您有时可以通过添加过滤器来“手动反混淆”,但结果无法保证。 –

回答

0

IE似乎并不关心形状色性,但我已经通过指定一个微小的旋转变换发现,你可以强制其抗混叠形状:

svg { 
    transform: rotate(.00001deg); /* hack to force anti-aliasing in IE */ 
} 

测试在IE11 。