0

svg イメージのレンダリングには androidsvg-1.2.1.jar を使用します。画像の元のサイズは、幅 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がピクセル単位の入力値を受け入れると書かれています。ただし、この場合、ビューボックスのサイズは推定されていましたが、画像自体はビューボックスの左上隅にあり、そのサイズはビューボックスのサイズよりもはるかに小さかった (約 4 倍未満)。

ここに画像の説明を入力

コードの最後の行を次のように変更したとき

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

画像のサイズはビューボックスのサイズとほぼ同じになりましたが、それでも少し小さいままです。なぜこうなった?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 に答える