如何在 AndroidSVG 中使用方法 setDocumentViewBox()

How to use method setDocumentViewBox() in AndroidSVG

我使用 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);

文档说方法 getDocumentHeightsetDocumentWidth 和方法 setDocumentViewBox 接受以像素为单位的输入值。但是在这种情况下 viewbox 有估计的大小,但是图片本身位于 viewbox 的左上角并且它的大小比 viewbox 的大小小得多(不到四倍)。

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

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

图片的大小已经和viewbox的大小差不多了,但是还是小了一点。为什么会这样? setDocumentViewBox 方法的输入应该应用什么值?

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

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

但是,例如,假设您的 SVG 是一个矩形,其值为 0,0,宽 100,高 20。你需要做 setDocumentViewBox(0,0,100,20)。如果您的 SVG 是一个半径为 50 的圆,位于 80,60,您将执行 setDocumentViewBox(30,10,100,100).

在您的情况下,背面的浅灰色矩形似乎定义了内容的限制,因此您可能会使用视图框的尺寸。

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