2016-04-03 6 views
0

svgイメージのレンダリングにandroidsvg-1.2.1.jarを使用します。画像の元のサイズは、幅260ピクセル、高さ100ピクセルです。私は次のようにディスプレイの幅に比例して画像の幅を設定しようとした:AndroidSVGでメソッドsetDocumentViewBox()を使用する方法

   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ピクセル単位で入力値を受け入れることを言います。しかしこの場合、ビューボックスのサイズは推定されていましたが、ピクチャ自体はビューボックスの左上隅にあり、そのサイズはビューボックスのサイズよりもはるかに小さかった(約4倍未満)。私は

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

としてコードの最後の行を変更した場合、画像のサイズがサイズビューボックスとほぼ同じになるが、まだ少し小さいままである

enter image description here

。なぜこうなった?そして、どの値をsetDocumentViewBoxメソッドの入力に適用すべきですか?

答えて

0

viewBoxは、SVGのコンテンツの制限を記述するためのものです。言い換えれば、ファイル内のグラフィック要素の周りのバウンディングボックス。これは、SVGビューポートの領域を埋めるためにSVGをどの程度スケーリングする必要があるかをレンダラーが知る方法です。ビューポートは、幅と高さ(setDocumentWidth()setDocumentHeight())で指定した長方形です。

完全にフィットするようにするには、コンテンツの正確な寸法に合わせてviewBoxを設定する必要があります。 SVGを提供したりリンクしたりしていないので、あなたのSVGが何であるかを正確に伝えることはできません。

たとえば、あなたのSVGが0,0であり、幅100、高さ20の矩形であったとします。 setDocumentViewBox(0,0,100,20)をする必要があります。あなたのSVGが80,60で半径50の円だった場合は、setDocumentViewBox(30,10,100,100)を実行します。

あなたのケースでは、背面の明るい灰色の矩形がコンテンツの制限を定義しているように見えるので、おそらくあなたのビューボックスの寸法を使用しています。

SVGの元のサイズは260x100です。その灰色の四角形のサイズに対応する場合は、setDocumentViewBox(0,0,260,100)でviewBoxを設定します。

関連する問題