在Java中缩放时查看SVG文件的像素

时间:2012-10-18 11:49:36

标签: java svg scaling pixels batik

我正在使用Batik库处理Java中的SVG文件。当我缩放它时会出现问题。我可以看到线条的像素。当然这不应该发生,我应该能够放大至少约4000%并保持平滑。

从扩展类中读取SVG文件,并使用覆盖绘制方法绘制它。首先,我将新的比例设置为AffineTransform变量,将其应用于方法的图形并使用super.paint()进行绘制。

我真的被困住了,无法弄清楚问题。我使用的SVG文件还可以,我在Inkscape中打开它们并且可以在没有显示像素的情况下进行缩放。请帮忙。

代码:

@Override
public void paint(Graphics g) {
  try {
    rad = (int)(radInit*zoom);
    updateTransform();

    Graphics2D g2d = (Graphics2D) g;
    g2d.setTransform(transform);

    super.paint(g);
    paintElements(g2d);
  } catch(NullPointerException nulle) {
    // System.out.println("SVG not loaded yet");
  }
}

private void updateTransform(){
  transform = new AffineTransform();
  transform.translate((-1)*zoom*centarX, (-1)*zoom*centarY);
  transform.scale(zoom, zoom);                      
}

1 个答案:

答案 0 :(得分:0)

需要的是

this.setRenderingTransform(transform, true);

这样就不会看到像素,或者更确切地说,所有东西都应该被绘制。