Pyqt5:Qpainter绘制文本、图形和图像

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

在这里插入图片描述

PyQt5中的QPainter提供了丰富的绘图功能,可以用于绘制各种图形,包括直线、矩形、圆形、椭圆、多边形、贝塞尔曲线等。下面分别介绍这些图形绘制方法。 ### 直线 绘制直线可以使用QPainter的drawLine()方法。该方法需要指定直线的起点和终点坐标。 ```python from PyQt5.QtGui import QPainter, QPen from PyQt5.QtCore import Qt pen = QPen(Qt.black) # 创建画笔对象 pen.setWidth(2) # 设置画笔宽度 painter = QPainter() # 创建画家对象 painter.begin(self) # 开始绘画 painter.setPen(pen) # 设置画笔 painter.drawLine(0, 0, 100, 100) # 绘制直线 painter.end() # 结束绘画 ``` ### 矩形 绘制矩形可以使用QPainter的drawRect()方法。该方法需要指定矩形左上角坐标和矩形的宽度和高度。 ```python painter.drawRect(50, 50, 100, 100) # 绘制矩形 ``` ### 圆形 绘制圆形可以使用QPainter的drawEllipse()方法。该方法需要指定圆形的外接矩形。 ```python painter.drawEllipse(50, 50, 100, 100) # 绘制圆形 ``` ### 椭圆 绘制椭圆可以使用QPainter的drawEllipse()方法。该方法需要指定椭圆的外接矩形。 ```python painter.drawEllipse(50, 50, 100, 50) # 绘制椭圆 ``` ### 多边形 绘制多边形可以使用QPainter的drawPolygon()方法。该方法需要指定多边形的各个顶点坐标。 ```python points = [QPoint(50, 50), QPoint(100, 50), QPoint(100, 100), QPoint(50, 100)] painter.drawPolygon(points) # 绘制多边形 ``` ### 贝塞尔曲线 绘制贝塞尔曲线可以使用QPainter的drawBezierCurve()方法。该方法需要指定曲线的起点、控制点和终点坐标。 ```python painter.drawBezierCurve(50, 50, 75, 100, 125, 100, 150, 50) # 绘制贝塞尔曲线 ``` 以上是QPainter绘制各种图形的方法,你可以根据需要进行选择和组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值