2016-04-03 2 views
0

Я использую androidsvg-1.2.1.jar для рендеринга изображения svg. Исходный размер изображения составляет 260 пикселей в ширину и 100 пикселей по высоте. Я попытался установить ширину изображений пропорционально ширину дисплея следующим образом:Как использовать метод setDocumentViewBox() в AndroidSVG

   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 принимают входные значения в пикселях. Но в этом случае viewbox оценил размер, но сама картинка располагалась в левом верхнем углу окна просмотра, а размер был намного меньше размера окна просмотра (менее четырех раз).

enter image description here

Когда я изменил последнюю строку кода в

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

размер изображения становится почти равным размеру ViewBox, но все еще остается немного меньше. Почему это происходит? И какие значения следует применять ко входу метода setDocumentViewBox?

ответ

0

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 составляет 260х100. Если это соответствует размеру этого серого прямоугольника, вы должны установить viewBox с setDocumentViewBox(0,0,260,100).

Смежные вопросы