2D图像旋转,几个问题

时间:2010-01-26 00:42:24

标签: graphics 2d rotation

我正在为我的2D绘图程序添加“鼠标旋转”。通过基本计算从原始鼠标点击到鼠标当前所在位置的旋转角度,我已经完成了所有代码的工作。

我还绘制了一个旋转的透明矩形,而不是在每次鼠标移动事件中实际旋转图像。

现在,我的问题是绘制这个矩形。我从图像的x / y位置绘制矩形,其宽度/高度是图像报告的内容。

然而,旋转矩形图像后,其新的宽度和高度要大得多,因为这两个屏幕截图应该有助于澄清:During rotationafter rotating then rotating again - 小“手柄”显示图像的x / y /宽度/高度延伸到

的位置

在第二个屏幕截图中,由于旋转,图像已经填充,具有空格(很难用文字描述!)。例如。一个200x100的图像在旋转后最终会像150x150(大约)一样结束,这在第二次调整大小时看起来有点奇怪。

有没有人知道如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

根据经验,永远不要旋转/调整先前旋转的图像,因为小错误将开始蔓延。

通常,保留原始图像的副本并将所有更改基于该图像更容易。

例如,第一次旋转是5度。第二次旋转是15度。要渲染第二张图像,请将原始副本旋转20度并显示该图像。

不确定这是否有帮助,或者我是否误读了您的问题。

答案 1 :(得分:0)

您应该跟踪图像的当前旋转,以便可以在当前旋转时围绕图像重新绘制矩形。如果您需要旋转超过1个,则必须跟踪图层和每个图层的旋转。

答案 2 :(得分:0)

您需要存储图像的原始尺寸和当前旋转角度,以便您可以有效地正确退出旋转。此外,您还需要保存原始图像数据。

现在发生的事情是您的程序丢失了有关原始图像大小的信息,因此它使用它所看到的(正确)。你想要的是从原始图像数据中重新绘制,只是旋转不同。