PyQt5的绘图系统可用于渲染矢量图形、图像和文本。
pyqt5使用QPainter绘制基础图形,包含:1,文本 ;2,各种图形(直线,点,椭圆,弧,扇形,多边形等);3,图像。
基础知识
1、QPainter包含3各基本图形对象:画笔QPen、画刷QBrush、图像QPixmap。QPen和QBrush分别指图形的轮廓和填充;
2、必须在painterEvent事件方法中绘制各种元素
流程:(1)初始化 paniter=QPainter() (2)开始 painter.begin() (3)绘制: painter.drawText(…) (4)绘制结束painter.end()
def paintEvent(self, e): # 绘图事件
qp = QPainter()
qp.begin(self)
。。。#绘制图形
qp.end()
一、绘制文本
def paintEvent(self, e): # 绘图事件
qp = QPainter()
qp.begin(self)
self.drawText(e, qp)
qp.end()
def drawText(self, event, qp):
qp.setPen(QColor(168, 34, 3))
qp.setFont(QFont('Decorative', 10))
qp.drawText(event.rect(), Qt.AlignCenter, "绘制文本")
二、绘制矩形
def paintEvent(self, e): # 绘图事件
qp = QPainter()
qp.begin(self)
self.drawRectangles1(qp) #绘制线条矩形
self.drawRectangles2(qp) #绘制填充矩形
self.drawRectangles3(qp) #绘制线条+填充矩形
self.drawRectangles4(qp) #绘制线条矩形2
qp.end()
def drawRectangles1(self, qp): #绘制填充矩形
qp.setPen(QPen(Qt.black, 2, Qt.SolidLine)) #颜色、线宽、线性
qp.drawRect(*self.data)
def drawRectangles2(self, qp): #绘制填充矩形
qp.setPen(QPen(Qt.black, 2, Qt.NoPen))
qp.setBrush(QColor(200, 0, 0))
qp.drawRect(220, 15, 200, 100)
def drawRectangles3(self, qp): #绘制线条+填充矩形
qp.setPen(QPen(Qt.black, 2, Qt.SolidLine))
qp.setBrush(QColor(200, 0, 0))
qp.drawRect(430, 15, 200, 100)
def drawRectangles4(self, qp): #绘制线条矩形2
path = QtGui.QPainterPath()
qp.setPen(QPen(Qt.blue, 2, Qt.SolidLine))
qp.setBrush(QColor(0, 0, 0, 0)) # 设置画刷颜色透明
path.addRect(100,200,200,100)
qp.drawPath(path)
三、绘制图像
def paintEvent(self, e): # 绘图事件
qp = QPainter()
qp.begin(self)
self.drawPic(qp)
qp.end()
def drawPic(self, qp):
img= QImage('python.jpg') #读取图像文件
rect=QRect(200,100,img.width()/2,img.height()/2) #进行绘制,对图片的大小压说为原来的二分之一
qp.drawImage(rect,img)
四、Qpen 的Qt.PenStyle
五、Qbrush 的brush-styles