使用QTransform让图片围绕label中心旋转
时间: 2023-07-20 18:31:24 浏览: 600
可以使用 `QTransform` 中的 `rotate` 方法实现让图片围绕 label 中心旋转的效果。具体步骤如下:
1. 获取 label 的中心点坐标,可以使用 `label.geometry().center()` 方法获取。
2. 构造一个 `QTransform` 对象,并使用 `rotate` 方法对其进行旋转操作。需要注意的是,`rotate` 方法需要传入旋转角度和旋转中心点坐标。
3. 将构造好的 `QTransform` 对象应用到图片上,可以使用 `QPainter` 中的 `setTransform` 方法。
示例代码如下:
```python
from PyQt5.QtGui import QPixmap, QPainter, QTransform
from PyQt5.QtWidgets import QLabel, QMainWindow
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.label = QLabel(self)
self.label.setGeometry(50, 50, 200, 200)
self.setCentralWidget(self.label)
self.image = QPixmap("path/to/image.png") # 加载图片
self.label.setPixmap(self.image) # 在 label 中显示图片
self.rotate_image(30) # 将图片旋转 30 度
def rotate_image(self, angle):
center = self.label.geometry().center() # 获取 label 中心点坐标
transform = QTransform().rotate(angle, center) # 构造旋转变换
self.image = self.image.transformed(transform) # 应用变换到图片上
self.label.setPixmap(self.image) # 更新 label 中的图片显示
```
在上述示例代码中,我们定义了一个 `MyWindow` 类,其中包含一个 `QLabel` 和一张图片。调用 `rotate_image` 方法可以对图片进行旋转,旋转角度由 `angle` 参数指定。在该方法中,我们首先获取 label 的中心点坐标,然后构造一个 `QTransform` 对象并使用 `rotate` 方法对其进行旋转操作。最后,将变换应用到图片上,并更新 label 中的图片显示。
阅读全文