2

私はAdobeIllustratorに似ていますが、はるかに単純で、画像ではなくコードを生成するプログラムを作成しています。

私が抱えている問題は、AffineTransformが正しく機能しないことです。誤用が原因である可能性があります。はい、AffineTransformスレッドがたくさんあることは知っていますが、私の質問には答えられません。

現在、画像の表示を制御するために3つの変数(scale、centerX、centerY)を使用しようとしています。centerXとcenterYは、画面の座標ではなく、画像を基準にしています。それらの目的は、ズームインとズームアウトを左上隅ではなくJPanelの中​​心から行うことです。

私は非常に接近するためにいくつかの異なる試みをしましたが、私がしていることに対して十分に正確ではありません。これを達成した後、AfflineTransform.createInverse()がNoninvertibleTransformExceptionをスローするため、ユーザーの操作を処理する方法がわかりません。これに関するアドバイスもいいでしょう。

私は多くの構成されていないものを試しましたが、運がありませんでした。これが、私がやろうとしていることのアイデアをあなたに与えるための最後のアプローチです。

    private BufferedImage image;
private boolean loadingImage;
private double scale = 1;
private double centerX = 0;
private double centerY = 0;
private boolean disableDrag = false;
private boolean disableZoom = false;
private AffineTransform affineTransform;

private AffineTransform createAffineTransfomation() {
    affineTransform = new AffineTransform();
    affineTransform.translate(
            (centerX - (image.getWidth() / 2)) * scale,
            (centerY  - (image.getHeight() / 2)) * scale
            );
    affineTransform.scale(scale, scale);
    return affineTransform;
}

私は自分自身を十分に説明したと思います。このAffineTransformのものは私を混乱させたので、私がもう何をしようとしているのか説明することはほとんどできません。

4

0 に答える 0