像素图的 PyQt 转换翻译没有影响

PyQt transform translate of pixmap having no affect

我需要旋转和平移从图像派生的 QPixmap 我可以使用 rotate 变换像素图,但 translate 似乎不会移动图像。 有人可以建议更改下面的示例以将图像移动到给定的 x 和 y 值吗?

对于运行代码,将test.png替换为方便的小图像文件。

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui 

class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setFixedSize(640, 480)

        label = QLabel("PyQt5 label!")
        label.setAlignment(Qt.AlignCenter)
        self.setCentralWidget(label)

        pixmap = QtGui.QPixmap("test.png")
        label.setPixmap(pixmap)
        xform = QtGui.QTransform().translate(250,50)
        xform.rotate(12) 
        xformed_pixmap = pixmap.transformed(xform, QtCore.Qt.SmoothTransformation)
        label.setPixmap(xformed_pixmap)

app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

您应该移动 QLabel,而不是使用 QTransforma 移动 QPixmap:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QTransform
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow


class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setFixedSize(640, 480)

        label = QLabel(self)
        label.move(250, 50)

        pixmap = QPixmap("test.png")
        label.setPixmap(pixmap)
        xform = QTransform()
        xform.rotate(12)
        xformed_pixmap = pixmap.transformed(xform, Qt.SmoothTransformation)
        label.setPixmap(xformed_pixmap)
        label.adjustSize()


app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()