IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> PyQt5-QPainter-绘图类 -> 正文阅读

[Python知识库]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()绘制三次贝塞尔曲线

有空继续写。。。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:52:51  更:2021-12-28 22:53:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:18:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码