当我指定1px时,为什么SVG线模糊或高度为2px?
我正在用SVG创建一条线,它在我的网页上看起来很模糊。更清楚地说,它似乎大于1px的笔划宽度。为什么会发生这种情况?有没有办法在SVG中修复这种情况 这是代码。当我独自运行这段代码时,它并不模糊。当它出现在我的网页上时,线条的高度似乎是2倍,而不是1倍当我指定1px时,为什么SVG线模糊或高度为2px?,svg,Svg,我正在用SVG创建一条线,它在我的网页上看起来很模糊。更清楚地说,它似乎大于1px的笔划宽度。为什么会发生这种情况?有没有办法在SVG中修复这种情况 这是代码。当我独自运行这段代码时,它并不模糊。当它出现在我的网页上时,线条的高度似乎是2倍,而不是1倍 #水平线1178{ 中风:rgb(154); 笔画宽度:1; } 因为当其Y坐标位于整个像素上时,1px笔划在其周围,因此“抗锯齿”(参考Paul LeBeau的)。在这种情况下,使用半像素坐标,或应用该坐标将为您进行像素舍入,但即使在舍入的对
#水平线1178{
中风:rgb(154);
笔画宽度:1;
}
因为当其Y坐标位于整个像素上时,
1px
笔划在其周围,因此“抗锯齿”(参考Paul LeBeau的)。在这种情况下,使用半像素坐标,或应用该坐标将为您进行像素舍入,但即使在舍入的对象上也会产生锐利的边缘:
.0
5.
.0以上
.0
5.
.0以上
.0
.0以上
5.
.0+填充,无冲程
.5+填充,无冲程
@PaulLeBeau的可能副本我已经更新了帖子。myf的回答中包含了其他帖子中没有的新的附加信息。为了在适当的时候给予表扬,Pauls在回答中也提到了这一点;当时我甚至有可能从他那里学到:伟大的榜样。因此,如果我提前知道笔划高度为1px(水平线),垂直位置为奇数,“81”不是“80”,那么我应该将y位置更改为“81.5”,以保持线高度为1px?没有看到您的更新。CrispEdge设置看起来很棒。你为什么把线放在没有填充的地方?默认情况下它们有填充吗?不是奇数/偶数:对于笔划,请记住它们是围绕连接给定坐标的线渲染的,并且整个坐标表示像素边界。参见Paul在链接问题中的回答,它更好地描述了它。Adfill
for line:不,只是将其撞到选择器中以影响rect
s。否则,全像素坐标适用于无频闪填充形状(参见示例中的最后一个正方形)。如果你像我一样喜欢这个答案,但你在对自己说,“嘿,在我的SVG中肯定有很多额外的字符,我正在努力让事情变得小一些!“--然后试着在打开
标记之后放置此标签,并记住在
之前关闭它:
。这样对每个对象都有效,并且真正改进了我的工作。