2

コンテナの中心に表示される画像の部分が回転の中心になるように、特定のポイントを中心に画像を回転できるようにする必要があります。

中心点を計算するために、私は現在、画像に適用された平行移動の逆を取っています。

Rotate.CenterX = Translate.X * -1;
Rotate.CenterY = Translate.Y * -1;

ただし、現在使用している計算は、画像を回転させた後に平行移動した場合は機能しないため、十分ではありません。

それはかなり単純な三角関数だと確信しています、私はそれが何であるかを考えることができません!

乾杯

4

1 に答える 1

1

GDI +を使用している場合は、以下を使用してください。

double ImWidth = (double)Im.Width;
double ImHeight = (double)Im.Height;
double XTrans = -(ImWidth * X);
double YTrans = -(ImHeight * Y);

g.TranslateTransform((float)XTrans, (float)YTrans);    
g.TranslateTransform((float)(ImWidth / 2.0 - XTrans), (float)(ImHeight / 2.0 - YTrans));
g.RotateTransform((float)Angle);
g.TranslateTransform(-((float)(ImWidth / 2.0 - XTrans)), -((float)(ImHeight / 2.0 - YTrans)));

WPFグラフィックオブジェクトを使用している場合は、次の変換グループを使用します。

TransformGroup TC = new TransformGroup();
RotateTransform RT = new RotateTransform(Angle);
RT.CenterX = Im.Width / 2.0;
RT.CenterY = Im.Height / 2.0;
TranslateTransform TT = new TranslateTransform(-X * Im.PixelWidth, -Y * Im.PixelHeight);
TC.Children.Add(TT);
TC.Children.Add(RT);

XとYは、画像を変換するパーセント値です(画像が1000ピクセルで、Xが0.1の場合、画像は100ピクセルに変換されます)。これが私が機能するために必要な方法ですが、それ以外の場合は簡単に変更できます。

于 2010-01-14T09:14:06.227 に答える