2012-02-18 98 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); 

是要旋轉您的矩形量。 posXposY是你想要在屏幕上繪製它的位置。

另外你需要確保你通過MatrixOrder ::追加否則的變換順序可能會改變,這將旋轉(給你一個類似的效果,你所看到的)前申請翻譯