描边宽度不会缩放;纵横比问题?

6
我在一个
1个回答

12

你是否考虑过将vector-effect属性设置为non-scaling-stroke?

 <line vector-effect="non-scaling-stroke" stroke="black" stroke-width="5" 
        x1="32" y1="50" x2="32" y2="350"/>

http://www.w3.org/TR/SVGTiny12/painting.html#NonScalingStroke

更新:

我能想到的最好解决方案是手动转换路径的坐标。

  • vector-effect="non-scaling-vector" 的支持不够稳定。我的 Firefox 和 Safari 浏览器版本不支持,但 Chrome 浏览器支持。
  • 在 SVG 标准中,没有一种方法可以独立指定描边的变换(类似于 Windows GDI+ 绘图系统,其中 Pen 对象具有自己的本地变换)。

在这种情况下,我能想到的最好解决方案是手动计算路径的坐标 - 假设 SVG 没有 transform 元素,则坐标已经被转换了。


我看了一下这个,因为在另一个stackoverflow帖子中提到了它。它似乎在Firefox 4中不起作用。但我希望它能够工作,这会让生活更加容易。向量效应似乎是TinySVG规范的一个特性,而不是浏览器实现的常规SVG 1.1规范。 我能理解为什么他们会添加这个,因为在分辨率有限的移动设备上缩放绘图是一个大问题。然而具有TinySVG没有的特性是有点讽刺的。 - AlanObject
Gareth,我认为你是对的。我希望能让SVG实现为我执行转换,但我想这太美好了,不可能实现。我会将您的答案标记为已接受的答案,因为这就是我要做的,但最好还是回答原始问题的解决方案。 - AlanObject
如果一切顺利,非缩放描边支持将出现在Firefox 15中,它刚刚登陆到夜间构建中。 - Robert Longson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接