qgraphicsview图像缩放
时间: 2023-08-25 14:07:39 浏览: 162
QGraphicsView 有一个 setTransform() 方法,可以用来设置 QGraphicsView 的缩放比例。下面是一个简单的示例代码,演示了如何使用 setTransform() 方法来缩放 QGraphicsView 中的图像:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView
class ImageViewer(QGraphicsView):
def __init__(self, parent=None):
super(ImageViewer, self).__init__(parent)
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
self.image = QPixmap("path_to_image_file")
self.scene.addPixmap(self.image)
self.setDragMode(QGraphicsView.ScrollHandDrag)
self.setRenderHint(QPainter.Antialiasing)
self.setRenderHint(QPainter.SmoothPixmapTransform)
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
def wheelEvent(self, event):
# 缩放因子,这里设置为 1.2,可以根据需求调整
factor = 1.2
if event.angleDelta().y() > 0:
# 放大
self.scale(factor, factor)
else:
# 缩小
self.scale(1 / factor, 1 / factor)
if __name__ == '__main__':
app = QApplication([])
viewer = ImageViewer()
viewer.show()
app.exec_()
```
在上面的示例中,我们使用 QGraphicsScene 和 QGraphicsView 显示了一张图像。通过重写 QGraphicsView 的 wheelEvent() 方法,我们可以捕获鼠标滚轮事件,并根据滚动方向来放大或缩小图像。在缩放时,我们使用 setScale() 方法来设置缩放比例。通过设置 setTransformationAnchor() 方法,我们可以使缩放中心点位于鼠标指针下方。
阅读全文