在屏幕上旋转矩形

时间:2012-02-18 02:42:47

标签: c++ gdi+ rotation

我正在使用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 个答案:

答案 0 :(得分: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的顺序,并且会在旋转之前应用Translation(给您的效果与您所看到的相似)