• Qt扫盲-QBrush理论使用总结


    一、概述

    QBrush类定义了由 QPainter 绘制的形状的填充模式。画笔有样式、颜色、渐变和纹理。

    brush style() 使用Qt::BrushStyle 枚举定义填充模式。默认的笔刷样式是 Qt::NoBrush(取决于你如何构造一个笔刷)。

    1. 填充模式

    这种风格告诉QPainter 不要填充形状。填充的标准样式是Qt::SolidPattern。可以在使用适当的构造函数创建笔刷时设置样式,此外,setStyle()函数还提供了在笔刷构造完成后更改样式的方法。

    在这里插入图片描述

    2. 笔刷颜色

    brush color()定义了填充图案的颜色。颜色可以是Qt的预定义颜色之一,Qt::GlobalColor,或任何其他自定义的QColor。可以分别使用color()和setColor()函数检索和修改当前设置的颜色。

    gradient() 定义了当当前样式为 Qt::LinearGradientPattern、Qt::RadialGradientPattern 或 Qt::ConicalGradientPattern 时 使用的渐变填充。渐变刷是通过在创建QBrush时将QGradient作为构造函数参数来创建的。

    Qt提供了三种不同的梯度:QLinearGradient, QConicalGradient和QRadialGradient——它们都继承了QGradient。

    QRadialGradient gradient(50, 50, 50, 50, 50);
    gradient.setColorAt(0, QColor::fromRgbF(0, 1, 0, 1));
    gradient.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0));
    
    QBrush brush(gradient);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    渐变的效果就像Qt Designer 里面的东西。
    在这里插入图片描述

    3. 纹理

    texture()定义当前样式为Qt::TexturePattern时使用的像素图。您可以通过在创建笔刷时提供像素图或使用setTexture()来创建带有纹理的笔刷。

    注意,不管之前的样式设置如何,应用setTexture()会使style() == Qt::TexturePattern。同样,如果样式是渐变的,调用setColor()也不会有什么不同。如果样式是Qt::TexturePattern样式,除非当前纹理是QBitmap,否则情况也是如此。

    如果画笔是完全不透明的,isOpaque() 函数返回true,否则返回false。画笔被认为是不透明的如果:

    • color()的alpha分量是255。
    • 它的纹理()没有alpha通道,也不是QBitmap。
    • gradient()中的颜色都有一个255的alpha分量。

    要指定线条和轮廓的样式和颜色,使用QPainter的笔结合Qt::PenStyle和Qt::GlobalColor:
    在这里插入图片描述

     QPainter painter(this);
    
      painter.setBrush(Qt::cyan);
      painter.setPen(Qt::darkCyan);
      painter.drawRect(0, 0, 100,100);
    
      painter.setBrush(Qt::NoBrush);
      painter.setPen(Qt::darkGreen);
      painter.drawRect(40, 40, 100, 100);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意,在默认情况下,QPainter在绘制形状时渲染轮廓(使用当前设置的笔)。使用painter.setPen(Qt::NoPen)来禁用此行为。

    有关绘画的更多信息,请参阅绘画系统。

    二、 Qt::GlobalColor

    这个是Qt预定义的一些颜色

    名称含义
    Qt::white3White (#ffffff)
    Qt::black2Black (#000000)
    Qt::red7Red (#ff0000)
    Qt::darkRed13Dark red (#800000)
    Qt::green8Green (#00ff00)
    Qt::darkGreen14Dark green (#008000)
    Qt::blue9Blue (#0000ff)
    Qt::darkBlue15Dark blue (#000080)
    Qt::cyan10Cyan (#00ffff)
    Qt::darkCyan16Dark cyan (#008080)
    Qt::magenta11Magenta (#ff00ff)
    Qt::darkMagenta17Dark magenta (#800080 )
    Qt::yellow12Yellow (#ffff00)
    Qt::darkYellow18Dark yellow (#808000)
    Qt::gray5Gray (#a0a0a4)
    Qt::darkGray4Dark gray (#808080)
    Qt::lightGray6Light gray (#c0c0c0)
    Qt::transparent19a transparent black value (i.e., QColor(0, 0, 0, 0))
    Qt::color000 pixel value (for bitmaps)
    Qt::color111 pixel value (for bitmaps)
  • 相关阅读:
    【leetcode】【2022/8/25】658. 找到 K 个最接近的元素
    高等数学(第七版)同济大学 习题4-5 个人解答
    scrollIntoView使用与属性详解
    ​win10下安装 RabbitMQ​
    DocuWare平台——用于文档管理的内容服务和工作流自动化的平台(上)
    Html_Css问答集(2)
    Seata-TCC模式
    qt关于在linux系统中使用qmake编译项目遇到的问题
    计算机二级Python刷题笔记------基本操作题11、14、17、21、30(考察列表)
    html+css网页设计 旅游网站首页1个页面
  • 原文地址:https://blog.csdn.net/qq_43680827/article/details/133957824