4

我的应用程序生成一组要在 SVG 中绘制的图形点。点值在水平和垂直方向上始终在 0-1000 范围内。进行绘图的矩形的大小可能会发生变化。

这是在 200 X 85 矩形上绘制图形的 SVG 元素:

<svg width="200" height="85" viewBox="0 0 1000 1000" preserveAspectRatio="none">
    <polyline  stroke="#e69800"
               stroke-width="2px"
               fill="none"
               points="0,1000 100,900 200,800
                       300,700 400,600 500,500
                       600 400 700,300 800,200900,100 1000,0"/>
</svg>

设置viewBox="0 0 1000 1000"使图形缩小到合适的大小,问题是这也会以相同的比例缩小线条的宽度,因此线条不再可见。

SVG 似乎忽略了属性中的“px” stroke-width="2px"

有没有办法以绝对像素大小指定线条的宽度(笔划宽度)?

4

1 回答 1

9

您可以使用该属性vector-effect="non-scaling-stroke"来防止线条与其余部分一起缩放。

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

这种修改产生的视觉效果是笔画宽度不依赖于元素的变换(包括非均匀缩放和剪切变换)和缩放级别

SVG1.1似乎不支持非缩放笔画,所以最终结果可能取决于渲染引擎。

于 2012-10-25T09:46:43.380 回答