コード public class Test extends JFrame{ int frameW = 500; //フレームの幅 int frameH = 500; //フレームの高さ /**メインクラス*/ public static void main(String args[]){ new Test(); //フレーム作成 } /**コンストラクタ*/ public Test(){ setBounds(0, 0, frameW, frameH); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); MainPanel mainPanel = new MainPanel(); add(mainPanel); setVisible(true); //フレーム表示 } }
コード public class MainPanel extends JPanel{ /**描画処理*/ protected void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.draw(new Rectangle2D.Double(60, 20, 60, 40)); SamplePaint.draw(g); g.setColor(Color.BLACK); g.setFont(new Font(Font.MONOSPACED, Font.BOLD, 10)); g.drawString("こんにちは", 300, 300); }
コード public class SamplePaint{ /**描画処理*/ public static void draw(Graphics g){ Graphics2D g2 = (Graphics2D)g; AffineTransform af = 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つ目の長方形だけピンポイントで回転させる方法を教えていただきたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。