与此帖子QGraphicsView doesn't resize after pixmap scale, while pixmap not centered any more有关,在QtWidgets.QGraphicsWidget
内缩放图像时,我也遇到同样的问题。降低质量。
我使用了抗锯齿模式:
self.setRenderHint(QPainter.Antialiasing)
以及比例图像中的QtCore.Qt.SmoothTransformation
。但是使用wheelEvent
缩放时仍然存在问题。帖子上方也建议缩放场景。
这是我的默认场景:
def wheelEvent(self, event):
self.setRenderHint(QtGui.QPainter.SmoothPixmapTransform)
self.setRenderHint(QtGui.QPainter.Antialiasing)
self.setRenderHint(QtGui.QPainter.HighQualityAntialiasing)
zoomFactor = 1.0 + event.angleDelta().y() * self._mouseWheelZoomRate
if event.angleDelta().y() > 0:
self._zoom_level = self._zoom_level + 1
else:
self._zoom_level = self._zoom_level - 1
if self._zoom_level == 0:
level = ''
else:
level = '_' + str(self._zoom_level)
self.setSceneRect(QtCore.QRectF(-600, -400, 600, 400))
transform = self.transform()
if transform.m22() * zoomFactor >= 2.0:
return
self.scale(zoomFactor, zoomFactor)
self.update()
我添加了一些数字来增加场景,但是可以工作。有没有计算场景面积的算法? 我的图片尺寸是:160 * 60像素