2011-03-17 3 views
3

私はイメージの上に座っている長方形を回転しようとしています。 Imageを表示するScrollableクラスがあります。画像の上に長方形を描くことができます。私の問題は、イメージが回転しているときに長方形を回転しようとしています。長方形が失われ、間違った場所に配置されます。Javaでアンカー/ローテーションポイントを見つける方法は?

私は既にGraphics2D、AffineTransform、createTransformedShape()を訴えていますが、運はありません。

ここでやろうとしているのは、矩形を手動で回転させることです。私は式の下に使用して、Rectangleポイント(x、y)を取得しようとしている:

double rectX = (Math.cos(Math.toRadians(90)) * (x - anchorX) - Math.sin(Math.toRadians(90)) * (y - anchorY)) + anchorY; 

double rectY = (Math.sin(Math.toRadians(90)) * (x - anchorX) - Math.cos(Math.toRadians(90)) * (y - anchorY)) + anchorY; 

がどのように私はJavaを使用してanchorX anchorYと値を見つけることができますか? Image heightを2でダイビングしようとしましたが、すべての回転角度で動作しません。 JPanelの幅と高さなどを取得する必要がありますか? Javaがアンカーポイントを見つけるために使用する数式はありますか?

答えて

1

私は目標のわからないんだけど、私は2つの可能な代替的なアプローチを参照してください。

  • hereを示すように、逆変換を使用してください。

  • BufferedImageに直立した画像と矩形をレンダリングし、合成画像を回転させます(here)。

1

あなたが上を横切るボックスのようにする場合は、移動方向の下隅を見つけなければなりません。右に回転している場合は、右下隅が必要です。

関連する問題