SVG 坐标系和单位 – SVG Coordinate Systems and Units – SVG 视口和视盒

All SVG content is drawn inside SVG viewports. Every SVG viewport defines a drawing region characterized by size (width, height), and an origin, measured in abstract user units. ( W3C)

画布是绘制所有 SVG 元素的空间或区域。该区域可以被认为是无限的,并且 SVG 图像可以是任意大小。 SVG 文档描述了一个二维对象,该对象可以具有无限坐标,沿 X 轴和 Y 轴的正方向和负方向。当我们绘画时,我们不受空间的限制。然而,屏幕的尺寸缩小了其上图像的观看区域。该可见区域称为视口。

SVG 视口 – SVG Viewport

所有 SVG 内容都必须显示在定义画布上的区域(以大小和原点为特征)的视口内。默认原点是 (0,0)。使用最外面的 <svg> 元素上的 widthheight 属性设置视口的范围。

1    <svg width="900" height="500" xmlns="http://www.w3.org/2000/svg">
2    </svg>

上面的代码显示了如何设置 SVG 视口的 widthheight 。透过900×500像素的“窗口”可以看到图片。这样的视口被命名为 初始视口 – initial viewport

文本 “画布和初始视口”

用户坐标系和 SVG 单位

让我们看看 SVG 如何表示绘图对象的位置和大小。

SVG 中的默认坐标系与 HTML 中的默认坐标系非常相似。它的工作原理类似于二维 x-y 平面。初始 SVG 坐标系设置在初始 SVG 视口中,原点 (0,0) 位于左上角。正 x 方向为向右,正 y 方向为底部。要指定 (xy) 坐标、宽度和高度值,可以使用 cm、mm、in、em、ex、pt、pcpx。默认的 SVG 单位是像素。

我们必须区分视口的初始 SVG 坐标系用户 SVG 坐标系。主要最外层的 <svg> 元素具有 viewBox 属性。如果未给出该属性,则用户坐标系与初始坐标系相同。

viewBox 属性设置用户坐标系,该坐标系可能与初始坐标系不同。 viewBox 有四个参数:

min-x, min-yviewBox 左上角的 x 和 y 坐标,

width, heightviewBox 的宽度和高度。

属性值必须放在引号内:viewBox=“min-x min-y width height”

视口就像一个窗口,您可以通过它查看 SVG 的内容。 viewBox也和viewport类似,可以用来缩放。考虑一个例子:

1    <svg width="900" height="500" viewBox="220 125 450 250" xmlns="http://www.w3.org/2000/svg">
2    </svg>

根据代码片段,viewBox 定义了一个特定的画布区域,覆盖了一个以原点(220,125)、宽度=450、高度=250 的矩形。然后,SVG 图像被裁剪到该区域并放大以填充整个视口。

文本“初始视口和用户视框”

左图显示了无限的 SVG 文档画布、初始 SVG 视口和用户视图框。右图展示了 viewBox 属性应用的结果。

由于使用 viewBox 属性,用户坐标系单位变得等于初始视口的两个单位。缩放发生了。更改 viewBox 属性的参数允许您沿坐标轴缩放、分段和移动原始图像。此外,SVG坐标系可以旋转、倾斜和翻转。更多详细信息请参见 基本 SVG 转换 部分和 SVG 2.0 W3C 页面。

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.