Как использовать метод setDocumentViewBox() в 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);
Документы говорят, что методы getDocumentHeight
, setDocumentWidth
и метод setDocumentViewBox
принимать входные значения в пикселях. Но в этом случае окно просмотра имело приблизительный размер, но само изображение находилось в левом верхнем углу окна просмотра, и его размер был намного меньше размера окна просмотра (менее чем в четыре раза).
Когда я изменил последнюю строку кода как
svg.setDocumentViewBox(0, 0, width/4, height/4);
Размер картинки стал практически равным размеру окна просмотра, но все же остался немного меньше. Почему это происходит? И какие значения следует применять для ввода setDocumentViewBox
метод?
1 ответ
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)
,