美文网首页
PyQt5 QBrush(画刷) 学习

PyQt5 QBrush(画刷) 学习

作者: _Mirage | 来源:发表于2020-04-05 13:10 被阅读0次

QBrush is an elementary graphics object. It is used to paint the background of graphics shapes, such as rectangles, ellipses, or polygons. A brush can be of three different types: a predefined brush, a gradient, or a texture pattern.

代码:

# coding='utf-8'

from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QBrush
from PyQt5.QtCore import Qt
import sys


class Gui(QWidget):
    def __init__(self):
        super(Gui, self).__init__()
        self.start()

    def start(self):
        self.setGeometry(300, 300, 355, 280)
        self.setWindowTitle('画刷')
        self.show()

    # 当窗体大小改变就触发绘画slot(窗体从无到有建立也算size改变)
    def paintEvent(self, e) -> None:
        qp = QPainter()
        qp.begin(self)
        # 绘制的主体内容在begin和end之间,begin的一个参数是绘制在哪个地方
        self.draw_brushes(e, qp)
        qp.end()

    def draw_brushes(self, e, qp):
        # 我们一共设置了9种不同风格的画刷\
        #     并绘制了9种矩形,这些画刷的用到的模式都是设计好的,\
        #     放在Qt里作为int常量保存.

        # 画刷主要是绘制图形内部的填充区域
        # 画刷构造函数:
        """
        QBrush()
        QBrush(Qt.BrushStyle)
        QBrush(Union[QColor, Qt.GlobalColor, QGradient],\
                style: Qt.BrushStyle = Qt.SolidPattern)
        QBrush(Union[QColor, Qt.GlobalColor, QGradient], QPixmap)
        QBrush(QPixmap)
        QBrush(QImage)
        QBrush(Union[QBrush, QColor, Qt.GlobalColor, QGradient])
        QBrush(Any)
        """
        # 实例化QBrush对象,并设置画刷模式为连续模式
        brush = QBrush(Qt.SolidPattern)
        qp.setBrush(brush)
        # 画矩形,填充使用画刷,边缘区域是用画笔\
        #     矩形左上角坐标是前两个参数,宽和长是后两个参数
        qp.drawRect(10, 15, 90, 60)

        brush.setStyle(Qt.Dense1Pattern)
        qp.setBrush(brush)
        qp.drawRect(130, 15, 90, 60)

        brush.setStyle(Qt.Dense2Pattern)
        qp.setBrush(brush)
        qp.drawRect(250, 15, 90, 60)

        brush.setStyle(Qt.DiagCrossPattern)
        qp.setBrush(brush)
        qp.drawRect(10, 105, 90, 60)

        brush.setStyle(Qt.Dense5Pattern)
        qp.setBrush(brush)
        qp.drawRect(130, 105, 90, 60)

        brush.setStyle(Qt.Dense6Pattern)
        qp.setBrush(brush)
        qp.drawRect(250, 105, 90, 60)

        brush.setStyle(Qt.HorPattern)
        qp.setBrush(brush)
        qp.drawRect(10, 195, 90, 60)

        brush.setStyle(Qt.VerPattern)
        qp.setBrush(brush)
        qp.drawRect(130, 195, 90, 60)

        brush.setStyle(Qt.BDiagPattern)
        qp.setBrush(brush)
        qp.drawRect(250, 195, 90, 60)

app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())

运行结果: image.png

相关文章

网友评论

      本文标题:PyQt5 QBrush(画刷) 学习

      本文链接:https://www.haomeiwen.com/subject/yjkuphtx.html