本文共 2263 字,大约阅读时间需要 7 分钟。
QPainter类在QWidget上执行绘图操作,它是一个绘图工具,为大部分图形界面提供了高度优化的函数,绘制操作在
QWidget.paintEvent()
中完成。绘制方法必须放在QtGui.QPainter
对象的begin()
和end()
之间。
方法 | 描述 |
---|---|
begin() | 开始在目标设备上绘制 |
drawArc() | 在起始角度和最终角度之间画弧 |
drawEllipse() | 在一个矩形内画一个椭圆 |
drawLine(int x1,int y1,int x2,int y2) | 绘制一条指定了端点坐标的线 |
drawPixmap() | 从图像文件中提取Pixmap并将其显示在指定的位置 |
drawPolygon() | 使用坐标数组绘制多边形 |
drawRect(int x,int y,int w,int h) | 以给定的高度和宽度从左上角坐标(x,y)绘制一个矩形 |
drawText() | 显示给定坐标处的文字 |
fillRect() | 使用QColor参数填充矩形 |
setBrush() | 设置画笔风格 |
setPen() | 设置用于绘制的笔的颜色、大小和样式 |
枚举类型 | 描述 |
---|---|
Qt.NoPen | 没有线 |
Qt.SolidLine | 一条简单的线 |
Qt.DashLine | 由一些像素分隔的短线 |
Qt.DotLine | 由一些像素分隔的点 |
Qt.DashDotLine | 轮流交替的点和短线 |
Qt.DashDotDotLine | 一条短线,两个点 |
Qt.MPenStyle | 画笔风格的掩码 |
import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Win(QWidget): def __init__(self): super().__init__() self.setGeometry(200, 200, 400, 400) self.setWindowTitle('在窗口中绘制文字') self.text = "Hello Python" def paintEvent(self, event): painter = QPainter(self) painter.begin(self) self.drawText(event,painter)#自定义绘制方法 painter.end() def drawText(self,event,qp): qp.setPen(QColor(168,34,3))#设置画笔的颜色 qp.setFont(QFont('SimSun',20))#设置字体 qp.drawText(event.rect(),Qt.AlignCenter,self.text)#绘制文字 if __name__ == "__main__": app = QApplication(sys.argv) form = Win() form.show() sys.exit(app.exec_())
运行效果如下:
import sys,mathfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Win(QWidget): def __init__(self): super().__init__() self.setGeometry(200, 200, 400, 400) self.setWindowTitle('在窗口中绘制点') def paintEvent(self, event): painter = QPainter() painter.begin(self) #自定义绘制方法 self.drawPoints(painter) painter.end() def drawPoints(self,painter): painter.setPen(Qt.red)#设置画笔的颜色 size = self.size() for i in range(1000): x = 100*(-1+2.0*i/1000) + size.width()/2.0 y = -50*math.sin((x-size.width()/2.0)*math.pi/50) + size.height()/2.0 painter.drawPoint(x,y) if __name__ == "__main__": app = QApplication(sys.argv) form = Win() form.show() sys.exit(app.exec_())
运行效果如下:
转载地址:http://ovozi.baihongyu.com/