2017-06-19 16 views
2

在添加viewBox(由于路径以用户单位为必填项)之前,这似乎正在工作。SVG中的混合笔划宽度单位

<?xml version="1.0" encoding="UTF-8" ?> 
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="7in" height="7in" viewBox="0 0 7 7"> 
<rect x="2" y="2" width="1" height="1" style="fill:none;stroke-width:1px;stroke:rgb(0,0,0)" /> 
</svg> 

现在,如果我查看inkscape,笔画宽度是90px(1in)。另外,如果我以英寸为单位指定矩形尺寸或位置,它会比我想象的要大得多(或移动到更大的坐标)。我知道我错过了一些东西,但通过阅读框阅读,而视口文档并没有引导我在任何地方启发(他们主要讨论像素)。有人能在这里指引我走向正确的方向吗?

回答

1

没有viewBox,你有一个7平方的视口。在CSS 1in is always 96px所以你的视口将是96像素。如果你画了一个矩形1in,它将占用屏幕的96个像素。 (Inkscape可能会做一些不同的事情,但所有的浏览器都使用96px = 1in)。

当你添加一个viewBox的时候,你可以将缩放添加到混合中。屏幕上1px的图形可能不再代表1px。即1in在您的图纸上仍然是96px,但屏幕上不再是96像素。

您当前的viewBox表示,屏幕上的7像素现在是7英寸或7 x 96像素,因此图形上的所有内容都被放大了96倍。画面上的1英寸现在在屏幕上为96 x 96像素。

+0

好的。很奇怪。我可以处理它。我可以查看Inkscape的输出以查看它的功能(可能在内部像素上工作?)。我可能只是放弃观看箱,但我怀疑我会再次需要它。 –

+0

我遇到的问题是translate(和其他转换)是以用户单位为单位的,但我认为它应该是一致的,因此请将用户单位设置为与我的文档大小保持一致。我不认为这会使1英寸成为12英寸(或其他)。我希望不得不避免计算缩放(不是我不能这样做,它看起来很不雅观) –