gpt4 book ai didi

image - 用鼠标旋转图像

转载 作者:行者123 更新时间:2023-12-05 00:07:37 25 4
gpt4 key购买 nike

我正在写一个绘图程序,Whyteboard -- http://code.google.com/p/whyteboard/

我已经实现了图像旋转功能,只是它的行为有点奇怪。我无法弄清楚根据鼠标位置旋转图像的正确逻辑

我的代码与此类似:

(这些是从鼠标事件处理程序调用的)

def resize(self, x, y, direction=None):
"""Rotate the image"""
self.angle += 1
if self.angle > 360:
self.angle = 0
self.rotate()


def rotate(self, angle=None):
"""Rotate the image (in radians), turn it back into a bitmap"""
rad = (2 * math.pi * self.angle) / 360
if angle:
rad = (2 * math.pi * angle) / 360
img = self.img.Rotate(rad, (0, 0))

因此,基本上,当用户移动鼠标时,旋转图像的角度会不断增加。但是,这有时意味着您必须多次“圈”鼠标才能将图像旋转 90 度,更不用说 360 度了。

但是,我需要它类似于其他程序 - 图像如何相对于鼠标相对于图像的位置旋转。

这是我遇到的麻烦。我已经离开了与语言无关的问题,尽管使用 Python 和 wxPython 它可以适用于任何语言

最佳答案

我假设 resize()每次鼠标移动更新时都会调用。您的问题似乎是 self.angle += 1 ,这使您可以在每次鼠标事件时将角度更新 1 度。

您的问题的解决方案是:选择图像上旋转中心的点(在这种情况下,它是您的 (0,0)self.img.Rotate() ,但通常它是图像的中心)。旋转角度应该是从该点到鼠标光标的直线所形成的角度减去用户单击时从该点到鼠标位置的直线所形成的角度。

要计算两点之间的角度,请使用 math.atan2(y2-y1, x2-x1)这会给你弧度的角度。 (您可能需要根据鼠标位置轴更改减法的顺序)。

关于image - 用鼠标旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993852/

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