Java低速GUI Swing 5 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
159:157 06/11/20 21:41:14 笑っただけだと悪いので… Canvas#paintComponent() を以下のように すれば何が期待通りになって,かつ何が起きてるのかわかると思われ. # 初回描画時とrepaintでの描画時の出力を比べてください. public void paintComponent (Graphics g){ Graphics2D g2 = (Graphics2D) g; AffineTransform originalTransform = g2.getTransform(); System.out.println("translate (x, y) = ( " + originalTransform.getTranslateX() + ", " + originalTransform.getTranslateY() + ")"); g2.clearRect (0, 0, this.getSize().width, this.getSize().height); originalTransform.translate(100, 0); g2.draw (new Line2D.Float (10, 50, 20, 50)); } 160:デフォルトの名無しさん 06/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オブジェクトを取得してそれを使うべきで、 さらにそれ以後の座標変換も相対的な変換にすべきだったんですね。 よく分かりました。ありがとうございます。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5116日前に更新/197 KB
担当:undef