5

这个 SVG 在所有浏览器中看起来都很模糊,在所有缩放级别。

<svg xmlns:svg="http://www.w3.org/2000/svg"
     xmlns="http://www.w3.org/2000/svg"
     width="240" height="240" version="1.1">
  <rect width="200" height="200" x="20" y="20"
        ry="20" style="fill:#fff;stroke:#000" />
</svg>

在 Chrome、Safari 和 Firefox 中,它看起来像这样:

模糊的 SVG

如果放大,您可以看到描边有两个像素的宽度,即使默认的描边宽度是 1 像素。手动将其设置为 1px 不会影响输出。

4

1 回答 1

16

这与像素光栅化有关。线宽为 1px,以 (20,20) 为中心。它在 19.5 和 20.5 像素之间绘制,因此浏览器必须为两个像素着色以“使用足够的墨水”。

解决方案:19.5用作像素栅格中的坐标。

<svg xmlns:svg="http://www.w3.org/2000/svg"
     xmlns="http://www.w3.org/2000/svg"
     width="240" height="240" version="1.1">
  <rect width="200" height="200" x="19.5" y="19.5"
        ry="20" style="fill:#fff;stroke:#000" />
</svg>

编辑:

在下图中,蓝点的大小为1px并且位于(居中)在(1,1)。所有四个像素都将被着色以获得尽可能接近不可显示点的像素图像。

像素光栅中的蓝点

于 2013-08-02T14:39:45.047 回答