我有一个从 SVG 资源导入的矢量绘图。有时,我必须调整尺寸。通常我会更新宽度和高度。我无法弄清楚视口宽度和高度如何影响 svg。似乎改变这些尺寸可以将 svg 推到可见区域内的视图之外。
这些计量单位代表什么?它与宽度和高度分别有什么关系?来自 Google 的文档(像往常一样)严重不足。有人可以详细说明一下吗?
viewportWidth
和 viewPortHeight
定义在其中绘制 VectorDrawable 内容的文档区域。 它们相当于 SVG viewBox
的宽度和高度字段。 如果您需要进一步的解释,请研究 SVG viewBox 的工作原理。
假设您的形状是一个宽 100、高 100 的矩形。 您的
viewportWidth
和 viewPortHeight
通常都应设置为 100。这样 Android 就知道底层形状的尺寸。
width
和 height
属性告诉 Android VectorDrawable 的默认(“固有”)渲染大小应该是多少。 您可以将它们想象为 PNG 或 GIF(或 SVG)的宽度和高度。
因此 VectorDrawable 的内容可以定义在 100x100 的区域内。但如果你的宽度和高度是 24x24,内容将从 100x100 缩小到 24x24。
这就是为什么摆弄
viewportWidth
和 viewPortHeight
会扰乱 VectorDrawable 的原因。 例如,如果将它们更改为 50x50,最终形状的一个角会缩小为 24x24,而不是整个形状。
Viewportwidth/Viewportheight 是 SVG 路径的画布尺寸,宽度/高度是整个可绘制对象的实际固有尺寸。
简单地说,
viewportWidth
就像框架的宽度,而width
就像框架内图片的宽度。
这可以用一个词来简化:缩放。
width
和height
用于描述设计绘图时的原始尺寸(注意所有绘制的路径都是相对于它们的)。
另一方面,viewportWidth
和 viewportHeight
用于描述要显示图像的最终尺寸。
viewport size > size
,图像将被放大。viewport size = size
,图像将具有相同的尺寸。viewport size < size
,图像将缩小。这是一个有趣的练习,尝试更改现有复合体
width
(包含路径元素的复合体)的 height
和 VectorDrawable
,您会注意到图像被裁剪,但尝试更改 viewportWidth
和 viewportHeight
,您会注意到图像被缩放。