使用QOpenGLWidget()实现2D图形绘制
发布时间:2024-01-02 10:12:25
QOpenGLWidget 是一个方便的类,它继承自 QWidget,并为 OpenGL 绘图提供了一个基本的窗口。
下面是一个简单的例子,展示如何使用 QOpenGLWidget 绘制一个简单的 2D 图形。首先,我们需要在程序的主窗口中添加一个 QOpenGLWidget。
from PyQt5.QtWidgets import QApplication, QMainWindow, QOpenGLWidget
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个 OpenGL 窗口
self.opengl_widget = MyOpenGLWidget(self)
self.setCentralWidget(self.opengl_widget)
self.setGeometry(100, 100, 800, 600)
self.setWindowTitle("2D 绘制")
self.show()
class MyOpenGLWidget(QOpenGLWidget):
def __init__(self, parent):
super().__init__(parent)
def paintEvent(self, event):
painter = QPainter(self)
# 设置画笔颜色为红色
painter.setPen(QColor(255, 0, 0))
# 设置绘制矩形的填充颜色为绿色
painter.setBrush(QColor(0, 255, 0))
# 绘制一个矩形
painter.drawRect(20, 20, 100, 100)
# 绘制一个圆形
painter.drawEllipse(150, 20, 100, 100)
# 设置画笔颜色为蓝色
painter.setPen(QColor(0, 0, 255))
# 绘制一条直线
painter.drawLine(20, 150, 250, 150)
# 绘制一条斜线
painter.drawLine(20, 200, 200, 250)
def resizeEvent(self, event):
self.update()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
在上述代码中,我们创建了一个主窗口类 MainWindow,并将一个自定义的 QOpenGLWidget 类(MyOpenGLWidget)作为中央窗口部件。QOpenGLWidget 的 paintEvent 函数被重写,用于绘制图形。
在 paintEvent 函数中,我们首先创建一个 QPainter 对象,指定对应的绘图设备为 self。然后,我们使用 setPen 方法设置画笔的颜色,使用 setBrush 方法设置绘制矩形时的填充颜色。接着,我们使用 drawRect、drawEllipse 和 drawLine 方法分别绘制了一个矩形、一个圆形和两条直线。
最后,我们在主函数中创建了一个 QApplication 对象和一个 MainWindow 对象,并启动应用程序。
运行程序后,将会出现一个包含绘制的图形的窗口。
