0

我使用 androidsvg-1.2.1.jar 来渲染 svg 图像。图像的原始尺寸为宽 260 像素,高 100 像素。我尝试将图像的宽度设置为与显示的宽度成比例,如下所示:

                Display display = getWindowManager().getDefaultDisplay();
                Point size = new Point();
                display.getSize(size);
                int width = size.x;
                int height = size.y;
                height = (int) (width / 2.6);
                svg.setDocumentHeight(height);
                svg.setDocumentWidth(width);
                svg.setDocumentViewBox(0, 0, width, height);

文档说 methodsgetDocumentHeightsetDocumentWidthmethodsetDocumentViewBox接受以像素为单位的输入值。但是在这种情况下,viewbox 有估计的大小,但图片本身位于 viewbox 的左上角,并且它的大小远小于 viewbox 的大小(小于大约四倍)。

在此处输入图像描述

当我将代码的最后一行更改为

svg.setDocumentViewBox(0, 0, width/4, height/4);

图片的大小已经几乎等于viewbox的大小,但仍然小了一点。为什么会这样?什么值应该应用于setDocumentViewBox方法的输入?

4

1 回答 1

0

viewBox 旨在描述 SVG 内容的限制。换句话说,就是文件中图形元素周围的边界框。这就是渲染器如何知道它需要缩放 SVG 以填充 SVG 视口区域的方式。视口是您使用宽度和高度(setDocumentWidth()setDocumentHeight())指定的矩形。

要获得完美契合,您需要将 viewBox 设置为内容的确切尺寸。您尚未提供或链接您的 SVG,因此我无法准确告诉您您的情况。

但是例如,假设您的 SVG 是一个位于 0,0、100 宽和 20 高的矩形。你需要做setDocumentViewBox(0,0,100,20). 如果您的 SVG 在 80,60 处是一个半径为 50 的圆,您可以使用setDocumentViewBox(30,10,100,100).

在您的情况下,背面的浅灰色矩形看起来好像定义了您的内容的限制,因此您可能会将其尺寸用于您的视图框。

你说你的 SVG 的原始尺寸是 260x100。如果这对应于那个灰色矩形的大小,那么您可以将 viewBox 设置为setDocumentViewBox(0,0,260,100).

于 2016-04-04T09:48:47.897 回答