在图像上绘制

6

我是PyQt5的新手,关于如何在已加载的图像(QPixmap("myPic.png")上使用QPainter绘制,我找不到适合我的答案。我尝试在paintEvent方法中进行操作,但没有成功。如果我想在下面的代码片段中在已加载的图像上绘制一条线,应该怎么做?

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(30, 30, 500, 300)
        self.initUI()

    def initUI(self):
        self.pixmap = QPixmap("myPic.png")
        lbl = QLabel(self)
        lbl.setPixmap(self.pixmap)

        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

你想要显示带有水平线的图像,还是想要保存带有这种变化的图像? - eyllanesc
第一个。在图像顶部显示线条,就像qpainter.drawLine()一样。 - Johan
1个回答

11

使用paintEventQPainter

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(30, 30, 500, 300)

    def paintEvent(self, event):
        painter = QPainter(self)
        pixmap = QPixmap("myPic.png")
        painter.drawPixmap(self.rect(), pixmap)
        pen = QPen(Qt.red, 3)
        painter.setPen(pen)
        painter.drawLine(10, 10, self.rect().width() -10 , 10)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

myPic.png

输入图片说明

输出:

输入图片说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接