gpt4 book ai didi

c++ - 在屏幕上旋转矩形

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:15 24 4
gpt4 key购买 nike

我正在使用 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);

矩形在旋转,但旋转越多,它的位置就在圆周上移动。
我很确定这是因为我在旋转屏幕的中心,而不是矩形的中心?
那么我如何围绕矩形的中心旋转它呢?

最佳答案

问题是它没有像您注意到的那样围绕矩形的中心旋转。所以你需要在旋转后平移对象。

        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::Append,否则变换的顺序可能会改变,这将在旋转之前应用平移(给您带来与您所看到的类似的效果)

关于c++ - 在屏幕上旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com