質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

5385閲覧

図形の回転

kisaragizinzin7

総合スコア90

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/11/07 08:22

コード 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つ目の長方形だけピンポイントで回転させる方法を教えていただきたいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Graphics2D#setTransformリファレンスの説明をよく見ることをお奨めします。そこには質問者さんがやりたいことの答えが書いてあります。

またそこをご覧になると質問者さんのコードに問題がある点(AffineTransformをnewしてそれをGraphics2Dへ設定することがよくないという点)に気づかれると思います。

投稿2016/11/07 11:26

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問