Qt扫盲-QBrush理论使用总结

news/2025/3/22 2:31:29/

Q 理论使用总结

  • 一、概述
    • 1. 填充模式
    • 2. 笔刷颜色
    • 3. 纹理
  • 二、 Qt::GlobalColor

一、概述

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);

渐变的效果就像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);

注意,在默认情况下,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)

http://www.ppmy.cn/news/1167212.html

相关文章

在 Android 上测试 Kotlin 协程

文章目录 官方文档在测试中调用挂起函数TestDispatchersStandardTestDispatcherUnconfinedTestDispatcher 注入测试调度程序设置主调度程序在测试之外创建调度程序创建您自己的 TestScope注入作用域 官方文档 https://developer.android.google.cn/kotlin/coroutines/test?hl…

带返回值的递归转为非递归

带返回值的递归转为非递归与不带返回值的递归转为非递归相似。不同的地方是有个如何保存和使用返回值的问题。 以组合数计算为例。计算公式是,C(n, k) C(n-1, k) C(n-1, k-1)。写成递归的代码是, func cbn(n, k) {if(nk||k0) return 1;else if(k1) r…

需要在 MySQL 服务器中监控的重要指标

MySQL是一个开源的关系数据库管理系统,它基于客户端-服务器模型运行,使用SQL作为其通信模式。它具有灵活性和可扩展性、高安全性、易用性以及无缝处理大型数据集的能力,由于其广泛的功能,MySQL 被用作数据库管理系统的一部分。 什…

GB28181学习(九)——校时

要求 联网内设备支持基于SIP方式或NTP方式的网络校时功能,标准时间为北京时间;系统运行时可根据配置使用具体校时方式; 流程 SIP校时在注册过程中完成,流程同注册和注销流程;在注册成功情况下,注册流程的…

【Android知识笔记】RecyclerView专题

RecyclerView工作流程 RecyclerView 的使用方法简单回顾: // 1. 添加gradle依赖 implementation androidx.recyclerview:recyclerview:1.1.0// 2. 布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http:…

做一个最新版的淘宝客返利程序源码有多难?

我们都知道淘宝客返利程序成为了很多人的创业和赚钱的工具。这种程序允许通过推广淘宝商品来获得佣金。然而&#xff0c;你知道构建这样一个淘宝客返利程序有多难吗&#xff1f;今天我们就从最基本的API说起&#xff0c;现在我将介绍构建一个最新版淘宝客返利程序所需的关键API…

Kotlin类的定义、构造函数、封装、继承和多态

Kotlin是一门面向对象的编程语言&#xff0c;它支持类的定义、构造函数、封装、继承和多态&#xff0c;这些是面向对象编程的核心概念。在下面的示例中&#xff0c;我们将通过代码来说明这些概念。 类的定义和成员访问 在Kotlin中&#xff0c;使用关键字class来定义一个类。类…

用 Python 这样去创建词云不是更美嘛?

什么是词云&#xff1f;在网络上我们经常可以看到一张图片&#xff0c;上面有一大堆大小不一的文字&#xff0c;这便是词云。词云一般是根据输入的大量词语生成的&#xff0c;如果某个词语出现的次数越多&#xff0c;那么相应的大小就会越大。 Python 中有一个专门用来生成词云…