質問: new AffineTransform(); af.setToRotation(45 * Math.PI/180, 90d, 40d); g2.setTransform(af); g2.draw(new Rectangle2D.Double(60, 20, 60, 40)); } } ``` 上のプログラムは図形を回転させるためのプログラムなのですが、 初めの長方形(g2.draw(new Rectangle2D.Double(60, 20, 60, 40));)は回転させずに描画しています。 次のSamplePaintクラスの長方形は45度回転させて描画しています。 そして最後の「こんにちは」も45度回転してしまいます。 先に回転の処理を行っているのでそれ以降の描画が全て回転するようになっていると思います。 文字列を回転させずに2つ目の長方形だけを回転させるにはどうしたらいいのでしょうか? この場合だとSamplePaint.draw(g);を最後にもってくればできますが、今の順序で、2つ目の長方形だけピンポイントで回転させる方法を教えていただきたいです。 よろしくお願いします。
回答: `Graphics2D#setTransform`のリファレンスの説明をよく見ることをお奨めします。そこには質問者さんがやりたいことの答えが書いてあります。 またそこをご覧になると質問者さんのコードに問題がある点(AffineTransformをnewしてそれをGraphics2Dへ設定することがよくないという点)に気づかれると思います。