0

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);                      
}
4

1 に答える 1

0

必要だったのは

this.setRenderingTransform(transform, true);

この方法では、ピクセルが見えないか、すべてが本来あるべき状態でペイントされます。

于 2012-10-18T12:16:51.713 に答える