0

SVGSalamander を使用しています。私のコードは svg 画像を読み込み、JDesktopPane.

File f = new File("awesome_tiger.svg");
SVGUniverse svgUniverse = new SVGUniverse();
try {
  SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(f.toURL()));
  try {
    diagram.render(g);
  }
  catch(Exception ex) {System.out.println(ex);}}
catch (Exception ex2) {System.out.println(ex2);}

画像がウィンドウ/フレームを完全に塗りつぶし、それに合わせてサイズ変更されるようにするにはどうすればよいですか?

SVGSalamander にはメソッドisScaleToFit()があるようですが、どうすれば使用できますか?

私はこれに使用しantiAliasます: g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);(これはSVGIconおよびSVGPanelクラスで書かれている方法です)

編集:解決しました

AffineTransform at = new AffineTransform();
at.setToScale(jdpPane.getWidth()/diagram.getWidth(), jdpPane.getWidth()/diagram.getWidth());
g.transform(at);
diagram.render(g);

比例してスケーリングします

4

1 に答える 1

0

AffineTransformsetToScaleメソッドを使用できます

File f = new File("awesome_tiger.svg");
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
SVGUniverse svgUniverse = new SVGUniverse();
try {
  SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(f.toURI().toURL()));
  try {
    AffineTransform at = new AffineTransform();
    at.setToScale(jdpPane.getWidth()/diagram.getWidth(), jdpPane.getWidth()/diagram.getWidth());
    g.transform(at);
    diagram.render(g);
  }
  catch(Exception e2) {System.out.println(e2);}}
catch (Exception ex) {System.out.println(ex);}

これは、paint()メソッドをオーバーライドするコードです

于 2013-06-18T16:01:12.100 に答える