JAppletのコンテンツをhtmlで指定されたサイズに自動的に拡大するプロジェクトに取り組んでいます。私はこれがレイアウトマネージャーのために作られたものだと認識していますが、アプレットの構造全体を書き直すことは許されませんので、塗料をオーバーライドしてGraphicsオブジェクトのAffineTransformを適切にスケーリングしたバージョン次に、上部のコンテナにマウスイベントをキャプチャし、適切なスケーリング変換を使用してそれらをスケールし直します。イムは現時点で描画部分に詰まっています。 Webブラウザで表示すると、スケーリングされたバージョンが正しく1回レンダリングされ、イメージは元のサイズに縮小されます。また、JAppletのペイントメソッドは一度しか呼び出されていないようです。ここで問題に焦点を当てた私のコードの切り取ったバージョンです。どんな助けもありがとう。前もって感謝します。JAppletのペイントメソッドをオーバーライドします
import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
public class Test extends JApplet
{
public static final int ORIGINAL_APPLET_WIDTH = 1024;
public static final int ORIGINAL_APPLET_HEIGHT = 800;
private AffineTransform scalingTransform;
private AffineTransform inverseScalingTransform;
@Override
public void init()
{
double xFactor = ((double)(this.getWidth()))/((double)(Test.ORIGINAL_APPLET_WIDTH));
double yFactor = ((double)(this.getHeight()))/((double)(Test.ORIGINAL_APPLET_HEIGHT));
this.scalingTransform = new AffineTransform();
this.inverseScalingTransform = new AffineTransform();
this.scalingTransform.scale(xFactor,yFactor);
this.inverseScalingTransform.scale(1D/xFactor,1D/yFactor);
}
@Override
public void paint(Graphics g)
{
((Graphics2D)g).setTransform(Test.this.scalingTransform);
super.paint(g);
}
}
全く同じ問題ではありませんが、[ここ](http://stackoverflow.com/questions/2244157/reverse-java-graphics2d-scaled-and-rotated-coordinates)は、ペイント時に使用されるトランスフォームを保存する例ですこれを使用してマウス座標をソースイメージのピクセルにマップします。 – finnw