Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE10 SVG实现拒绝抗别名<;rect>;元素?_Svg_Internet Explorer 10_Antialiasing - Fatal编程技术网

IE10 SVG实现拒绝抗别名<;rect>;元素?

IE10 SVG实现拒绝抗别名<;rect>;元素?,svg,internet-explorer-10,antialiasing,Svg,Internet Explorer 10,Antialiasing,我一直在开发一个使用d3和SVG显示一系列矩形的图表库。数据集控制给定区域中要显示的矩形的数量,并且在大多数情况下,数学计算不清楚,这意味着矩形不是以整数开始和结束的。Firefox、Chrome和Safari都通过消除矩形的锯齿来解决这一问题。IE似乎只是四舍五入到最近的像素值,并且拒绝对任何rect元素进行反锯齿。我尝试过改变形状渲染等,但都没有效果 以下是IE10和最新Chrome版本中相同数据的并列比较: IE10: 铬: 有没有人知道一个不涉及修改SVG标记结构的修复方案?设置CS

我一直在开发一个使用d3和SVG显示一系列矩形的图表库。数据集控制给定区域中要显示的矩形的数量,并且在大多数情况下,数学计算不清楚,这意味着矩形不是以整数开始和结束的。Firefox、Chrome和Safari都通过消除矩形的锯齿来解决这一问题。IE似乎只是四舍五入到最近的像素值,并且拒绝对任何rect元素进行反锯齿。我尝试过改变形状渲染等,但都没有效果

以下是IE10和最新Chrome版本中相同数据的并列比较:

IE10:

铬:


有没有人知道一个不涉及修改SVG标记结构的修复方案?设置CSS属性或标记属性比更改元素本身更可取。除此之外,有没有人看过微软的文档来解释这一决定的理由?到目前为止,我还没有找到任何结果。

IE似乎并不关心shape rendering属性,但我发现可以通过指定一个微小的旋转变换将其强制为反锯齿形状:

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

在IE11上测试。

您的图像看起来完全一样。它们显示相同的数据,但一个用Chrome渲染,另一个用IE10渲染。Chrome渲染中的所有条的厚度和间距应均匀,并具有抗锯齿边。IE渲染中的列应该具有锐利的边缘,没有部分透明度,列的间距不均匀,右侧第四列的厚度仅为其他列的一半。如果,知道了这一点,他们看起来仍然一模一样,那么一些非常奇怪的事情正在发生……哦,对了,现在我明白了。未指定抗锯齿行为,因此这些决定非常特定于平台/浏览器,并且发生在底层本机图形库的级别(根据GPU与CPU渲染,也可能产生不同的结果)。通常使用CrispEdge可以在每个平台上获得非抗锯齿结果。您有时可以通过添加过滤器来“手动反别名”,但结果不能保证。