通过滚轮事件用鼠标缩放会降低图像质量

时间:2019-06-21 17:01:33

标签: python pyqt5

与此帖子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像素

0 个答案:

没有答案