PyQt5-QPainter-绘图类

一、介绍

QPainter类在小部件和其他绘画设备上执行低级绘画。
QPainter提供了高度优化的功能,可以完成GUI程序所需的大多数绘图。它可以绘制从简单的线条到复杂的形状(如馅饼和和弦)的所有内容。它还可以绘制对齐的文本和像素映射。通常,它会绘制一个"自然"坐标系,但它也可以进行视图和世界变换。QPainter可以对任何继承QPaintDevice类的对象进行操作。

QPainter官网介绍文档

二、继承

QPainter 继承自 PyQt5.QtGui
QStylePainter 继承自QPainter

三、最简单的画线代码

下面是在要给窗口里画了两条线,一条竖线,一条横线。
在这里插入图片描述

from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor, QPen,QPainter,QPaintEvent

class Window(QWidget):#定义类继承自
    def __init__(self):
        super().__init__()#调用父类init方法
        self.setWindowTitle("QPainter-演示")
        self.resize(400,300)
    def paintEvent(self,p:QPaintEvent):
        painter =  QPainter() #实例化一个画家
        painter.begin(self) #开始绘画
        pen = QPen(Qt.red,2) #实例化画笔,颜色是红色,线宽2
        painter.setPen(pen) #给画家设置画笔
        painter.setBrush(QColor(0,255,6)) #给画家设置笔刷
        
        painter.drawLine(50,100,150,100) # 画横线
        painter.drawLine(100,50,100,150) # 画竖线
        
        painter.end() #结束绘画
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

要完成绘画需按照上面基本代码规则来写。

1、代码需要写在 paintEvent()方法内 。
2、绘画开始前先实例化一个画家,painter = QPainter()。
3、绘画的代码以painter.begin(QPaintDevice)开始,以painter.end()结束。
4、给画家设置画笔、笔刷等属性。
5、具体绘画。

四、一些设置

1、setPen() 设置画笔

用于定义绘制线条或边界的颜色、线宽
这个方法有三种形式:

  • setPen(Union[QColor, GlobalColor, QGradient])
  • setPen(Union[QPen, QColor, GlobalColor, QGradient])
  • setPen(PenStyle)

2、setBrush()设置笔刷

用于设置填充形状的颜色或图案。
这个方法有两种形式:

  • setBrush(Union[QBrush, QColor, GlobalColor, QGradient])
  • setBrush(BrushStyle)

3、 setFont()设置字体

用于设置绘制文字的字体和大小
setFont(QFont)

4、 setOpacity() 设置不透明度

将画家的不透明度设置为不透明度。该值应在 0.0 到 1.0 的范围内,其中 0.0 表示完全透明,1.0 表示完全不透明。
setOpacity(float)

五、绘图方法

1、drawPoint() 画单个点

在指定位置画一个点。

  • drawPoint(Union[QPointF, QPoint]) # 输入QPointF或 QPoint确定点的位置
  • drawPoint(QPoint) # 输入要给QPoint对象确定点的位置
  • drawPoint(int, int) #输入如两个整数确定点的位置

2、drawPoints() 画多个点

一次画多个点

  • drawPoints(QPolygonF)
  • drawPoints(QPolygon)
  • drawPoints(Union[QPointF, QPoint], …) #同时用整数点 或浮点数点生成多个点
  • drawPoints(QPoint, …) #使用整数精度点对象生成多个点

3、drawLine() 画单条线

划线方法有5中,根据需要使用。

  • drawLine(QLineF) # 输入一个浮点精度生成的QLineF对象
  • drawLine(QLine) # 输入一个整数精度生产的QLine对象
  • drawLine(QPoint, QPoint) # 输入两个点QPint生产一条线
  • drawLine(Union[QPointF, QPoint], Union[QPointF, QPoint]) #使用QPointF 和QPoint生成一条线,两点一个是浮点数生成,一个是整数生成。
        painter.drawLine(QPoint(50,90),QPointF(150.0,210.7))

在这里插入图片描述

  • drawLine(int, int, int, int) #输入4个整数生成一条线
        painter.drawLine(50,50,200,200)

在这里插入图片描述

4、drawLines()画多条线

可以同时画多天线,有8中方式。

  • drawLines(Iterable[QLineF]) #输入元素为QLineF的可迭代对象

下面例子是把多个QLineF对象放入列表中

        painter.drawLines([
                           QLineF(QPoint(0,0),QPoint(50,100)),
                           QLineF(QPoint(0,0),QPoint(200,200)),
                           QLineF(QPoint(0,0),QPoint(300,200))
                           ])

在这里插入图片描述

  • drawLines(Iterable[Union[QPointF, QPoint]])
  • drawLines(Iterable[QLine]) #输入元素是QLine的可迭代对象生成多条线
  • drawLines(Iterable[QPoint]) #输入元素是QPoint的可迭代对象生成多条线
  • drawLines(QLineF, …) #输入多个QLineF生成多条线
  • drawLines(Union[QPointF, QPoint], …)
  • drawLines(QLine, …)
  • drawLines(QPoint, …)

5 、drawRect() 画矩形

6、 drawRoundedRect() 画圆角矩形

7、drawEllipse() 画椭圆

8、drawArc() 画弧

9、drawPie()

10、drawChord()

11、drawPolyline() 画多段线

12、drawPolygon() 画多边形

13、drawConvexPolygon() 画凸多边形

14、 draw Cubic Bezier()绘制三次贝塞尔曲线

有空继续写。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值