- 160 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 13:42:22 ]
- ありがとうございます!
次のようにしたら解決できました。 Graphics2D g2 = (Graphics2D)g; g2.clearRect(0, 0, this.getSize().width, this.getSize().height); //画面を一度クリア AffineTransform af = g2.getTransform();//new AffineTransform(); System.out.println("translate (x, y) = ( " + af.getTranslateX() + ", " + af.getTranslateY() + ")"); af.translate(100, 0); System.out.println("translate (x, y) = ( " + af.getTranslateX() + ", " + af.getTranslateY() + ")"); g2.setTransform(af); g2.draw(new Line2D.Float(10,50,20,50)); //x軸 タブにした状態などの色々な状況によって、Graphics2Dの変換行列が自動的に辻褄をあわせてくれていたんですね。 だからg2.getTransform();としてAffineTransformオブジェクトを取得してそれを使うべきで、 さらにそれ以後の座標変換も相対的な変換にすべきだったんですね。 よく分かりました。ありがとうございます。
|

|