QPainter清除上一次绘制的图形的例子
时间: 2023-12-27 22:04:32 浏览: 303
QT用Qpainter绘制实时曲线图
3星 · 编辑精心推荐
下面是一个使用QPainter绘制图形并清除上一次绘制的图形的例子:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor, QPen
from PyQt5.QtCore import Qt
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('QPainter Example')
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
qp.setPen(QPen(Qt.red, 4, Qt.SolidLine))
qp.setBrush(QColor(255, 0, 0))
qp.drawRect(10, 10, 100, 100)
qp.end()
def mousePressEvent(self, event):
self.update()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
```
在这个例子中,我们在`paintEvent`方法中使用`QPainter`绘制了一个红色的矩形。当鼠标点击时,我们使用`update`方法更新窗口,这会导致`paintEvent`被调用,并重新绘制窗口。
如果我们希望每次绘制时都清除上一次绘制的图形,我们可以在`paintEvent`方法中添加如下代码:
```python
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
qp.setCompositionMode(QPainter.CompositionMode_Clear)
qp.fillRect(event.rect(), Qt.transparent)
qp.setCompositionMode(QPainter.CompositionMode_SourceOver)
qp.setPen(QPen(Qt.red, 4, Qt.SolidLine))
qp.setBrush(QColor(255, 0, 0))
qp.drawRect(10, 10, 100, 100)
qp.end()
```
这里我们使用`setCompositionMode`方法设置绘制模式为`CompositionMode_Clear`,然后使用`fillRect`方法填充整个窗口的矩形区域,颜色设置为透明,这样就清除了上一次绘制的图形。最后,我们再将绘制模式设置为`CompositionMode_SourceOver`,绘制新的图形。
这样,每次绘制时都会先清除上一次绘制的图形。
阅读全文