2012-02-18 29 views
1

私はGDI +を使って画面に四角形を描画し、それを45度回転させようとしています。
は、ここで私は 画面上で矩形を回転

Pen RedPen(Color(255, 255, 0, 0), 4); 

HDC screenDC = GetDC(NULL); 
Graphics graphics(screenDC); 

graphics.RotateTransform(45); 
graphics.DrawRectangle(&RedPen, 150, 150, 50, 50); 

矩形回転

を使用しているコードだが、それはより多くのそれが回転円形に位置が移動します。
長方形の中心ではなく、画面の中心を回転させているので、これが本当に確実でしょうか?
それで、矩形の中心をどのように回転させるのですか?

答えて

1

問題は、目立つように四角形の中心を中心に回転していないことです。したがって、オブジェクトを回転させた後にオブジェクトを平行移動する必要があります。

 e->Graphics->RotateTransform(degrees); 
     e->Graphics->TranslateTransform(posX, posY, MatrixOrder::Append); 
     e->Graphics->DrawRectangle(gcnew Pen(Color::Blue,3.0f), -width/2, -height/2, width, height); 

はあなたの四角形を回転したい金額です。 posXおよびposYは、画面に描画する位置です。

またMatrixOrder :: Appendを渡す必要があります。それ以外の場合は、Transformの順序が変更され、回転前に翻訳が適用されます(表示されているものと同様の効果が得られます)