質問

私はその中心点の周りに長方形を回転させたいと思います、そして、それはその空間で描かれて回転すると思われる場所にとどまるべきです

これは私のコードです:

AffineTransform transform = new AffineTransform();

    transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2);
    Shape transformed = transform.createTransformedShape(rectangle);
    g2.fill(transformed)

長方形は回転しますが、画面の別の部分で描画されます。これを修正するにはどうすればよいですか?

役に立ちましたか?

解決

私はこれを試していませんが、長方形の正しい真ん中を取得していないようです。試す:

AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(45), rectangle.getX() + rectangle.width/2, rectangle.getY() + rectangle.height/2);
g2.fill(transformed);

違いは、開始xポイントに幅を追加し、開始yポイントに高さを追加することです。したがって、長方形の中央です。

お役に立てれば。

他のヒント

AffineTransform transform = new AffineTransform();
transform.rotate(theta, rect.getX() + rect.width/2, rect.getY() + rect.height/2);
AffineTransform old = g2.getTransform();
g2.transform(transform);

// draw your rectangle here...

g2.setTransfrom(old);

そのようにすると、より高度な長方形を描くことができます。たとえば、グラデーションフィル、または長方形の内部のテキストを使用します。すべてがそれで回転します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top