簡體   English   中英

動態縮放SVG圖像到幀/窗口大小

[英]Dynamically scale SVG image to the frame/window size

我正在使用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()方法,但如何使用它?

我將其用於antiAliasg.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);

按比例縮放

我們可以使用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()方法的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM