(1)本类的继承关系如下

在这里插入图片描述

(2)本类是支持流运算的

在这里插入图片描述

(3)本类的构造函数与运算符 operator 函数

在这里插入图片描述

++关于本类的构造函数,进行以下测试

在这里插入图片描述

++只修改画刷的构成

在这里插入图片描述

++以及,看来与 类型 QBitmap 有关

在这里插入图片描述

++关于渐变填充,随后在渐变篇测试

(4) 本类型支持相等与不等比较

在这里插入图片描述

(5) 以及

在这里插入图片描述

++本刷子的代码完毕。就这些。

(6)本源代码定义于头文件 qbrush . h

QT_BEGIN_NAMESPACE/*
The QBrush class defines the fill pattern of shapes drawn by QPainter.Detailed Description :
画笔具有样式、颜色、渐变和纹理。  (构造;质地;结构;纹理; texture)
A brush has a style, a color, a gradient and a texture.画笔的`style()`函数使用`Qt::BrushStyle`枚举来定义填充图案。
默认的画笔样式是`Qt::NoBrush`(具体取决于如何构建画笔)。
该样式指示绘图器不填充形状填充的标准样式是`Qt::SolidPattern'。
在创建画笔时可以通过相应的构造函数设置该样式,此外,`setStyle()、函数提供了在创建画笔后更改样式的手段。画笔的`color()`函数定义了填充图案的颜色。
颜色可以是Qt预定义的色值之一Qt::GlobalColor,或者任何其他自定义的`QColor'。
当前设置的颜色可以通过color()、和`setColor()、函数分别进行检索和更改。gradient()、函数定义了当前样式为 Qt::LinearGradientPattern、
Qt::RadialGradientPattern 或 Qt::ConicalGradientPattern 时使用的渐变填充(圆锥形的 Conical)。
在创建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);texture()、函数定义了在当前样式为 Qt::TexturePattern 时使用的位图。
您可以通过在创建画笔时提供位图或通过使用`setTexture()、方法来创建带有纹理的画笔。请注意,调用setTexture()将使style()等于Qt::TexturePattern,而无论先前的样式设置如何。
此外,如果样式是渐变样式,调用setcolor()将不会产生任何影响。
同样,如果样式是Qt::TexturePattern样式,除非当前纹理是QBitmap,否则也不会产生任何影响。isOpaque()函数返回true如果画笔是完全不透明的,否则返回false。
如果满足以下条件,则认为画笔是不透明的:*颜色的alpha组件是255。*其纹理()没有alpha通道,也不是QBitmap。*渐变中的颜色都有一个为255的alpha组件。要指定线条和轮廓的样式和颜色,请使用Painter's笔,并结合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支持的画笔样式,即使用Painter绘制的形状的填充式。
enum BrushStyle { // brush styleNoBrush, //No brush pattern.SolidPattern, //Uniform color.Dense1Pattern, //Extremely dense brush pattern.Dense2Pattern, //Very dense brush pattern.Dense3Pattern, //Somewhat dense brush pattern.Dense4Pattern, //Half dense brush patternDense5Pattern, //有点稀疏的刷子图案。Dense6Pattern, //Very sparse稀疏的 brush pattern.Dense7Pattern, //Extremely sparse brush pattern.HorPattern, //Horizontal linesVerPattern, //Vertical lines.CrossPattern, //Crossing horizontal and vertical lines.BDiagPattern, //Backward diagonal lines. 向后对角线。FDiagPattern, //Forward diagonal lines.DiagCrossPattern, //Crossing diagonal lines.LinearGradientPattern, //Linear gradientRadialGradientPattern, //RadialGradientConicalGradientPattern, //ConicalGradientTexturePattern = 24 //自定义图案 Custom pattern
};*/struct QBrushData;
class QPixmap;
class QGradient;
class QVariant;
struct QBrushDataPointerDeleter
{void operator()(QBrushData * d) const noexcept; //括号()运算符函数
};//QBrush stream functions
Q_GUI_EXPORT QDataStream & operator<<(QDataStream &, const QBrush &);
Q_GUI_EXPORT QDataStream & operator>>(QDataStream &,       QBrush &);
Q_GUI_EXPORT QDebug        operator<<(QDebug       , const QBrush &);struct QBrushData
{QAtomicInt ref;Qt::BrushStyle style;QColor color;QTransform transform;
};class Q_GUI_EXPORT QBrush
{
private:friend class  QRasterPaintEngine;friend class  QRasterPaintEnginePrivate;friend struct QSpanData;friend class  QPainter;friend bool   Q_GUI_EXPORT qHasPixmapTexture(const QBrush & brush);void detach(Qt::BrushStyle newStyle);void init(const QColor & color, Qt::BrushStyle bs);//对画刷的初始化只关注这俩方面:颜色与样式DataPtr d; //本类的数据成员public:QBrush(); //构建一个默认的黑色画刷,样式为Qt::NoBrush(即此画笔不会填充形状)。QBrush(Qt::BrushStyle bs); //使用给定的样式 bs构建一个黑色画刷。//Constructs a brush with the given color and style. 使用给定的颜色和样式构造一个画刷。QBrush(const QColor    & color, Qt::BrushStyle bs = Qt::SolidPattern);QBrush(Qt::GlobalColor   color, Qt::BrushStyle bs = Qt::SolidPattern);//创建一个黑色的刷子,并将纹理设置为给定的像素图 pixmap。样式设置为Qt::TexturePattern。QBrush(const QPixmap   & pixmap);QBrush(const QImage    & image );QBrush(const QColor    & color, const QPixmap & pixmap); //模式 patternQBrush(Qt::GlobalColor   color, const QPixmap & pixmap);//使用给定的颜色 color和存储在pixmap中的自定义图案构造一个画刷。//样式设置为Qt::TexturePattern。颜色仅对QBitmap有效。QBrush(const QGradient & gradient); //根据给定的渐变 gradient构造一个画刷。//笔刷样式被设定为相应的渐变样式(可以是 Qt::LinearGradientPattern、//  Qt:.RadialGradientPattern或Qt::ConicalGradientPattern),QBrush(const QBrush    & brush);    // copy构造函数QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QBrush)~QBrush();QBrush & operator=(const QBrush & brush); // copy赋值运算符函数operator QVariant() const; //类型转换运算符函数bool operator==(const QBrush & b) const;inlinebool operator!=(const QBrush & b) const{   return !(operator==(b));   }inline void swap(QBrush & other) noexcept { qSwap(d, other.d); }using DataPtr = std::unique_ptr<QBrushData, QBrushDataPointerDeleter>; //独占式智能指针inlinebool      isDetached() const { return d->ref.loadRelaxed() == 1; }bool      isOpaque() const; //如果画笔完全不透明,则返回true;否则返回false。//如果满足以下条件,则认为画笔是不透明的://  颜色的alpha组件为255。//  其纹理(texture)没有 alpha通道且不是QBitmap。//  渐变中的颜色()都具有alpha组件为255。//  它是一个扩展的径向渐变。inline DataPtr  & data_ptr  ()       { return d; }const QGradient * gradient() const; //返回描述此画刷的渐变。inline constQColor          &         color() const { return d->color; }void                   setColor(const QColor    & color); //画刷颜色inlinevoid                   setColor(Qt::GlobalColor   color){   setColor(QColor(color));   }//将画笔颜色设置为给定的颜色 color。//请注意,如果样式是渐变样式,调用setcolor()并不会产生任何影响。//同样,如果样式是 Qt:TexturePattern 样式,除非当前纹理是 QBitmap,否则也不会产生影响。inlineQt::BrushStyle            style() const { return d->style; }void                   setStyle(Qt::BrushStyle); //画刷样式//返回自定义刷子图案,如果没有设置自定义刷子图案,则返回空位图。QPixmap                   texture     () const;void                   setTexture     (const QPixmap & pixmap);//将画笔的像素图设置为给定的像素图 pixmap。样式被设置为  Qt::TexturePattern纹理模式。//当前的画笔颜色仅对单色位图有效,即对于QPixmap::depth()==1(QBitmap)//如果纹理设置为QPixmap,它将被转换为QImage。QImage                    textureImage() const;void                   setTextureImage(const QImage  & image );//请注意,当前的笔刷颜色对单色图像不会有任何影响,这与使用QBitmap调用setTexture()不同。//如果您想改变单色图像笔刷的颜色,可以先将图像转换为QBitmap,使用QBitmap::fromImage()函数,//  然后将生成的QBitmap用作纹理,或者修改图像颜色表中的条目。inline  //返回当前的刷子变换矩阵。QTransform                transform() const { return d->transform; }void                   setTransform(const QTransform & matrix);//将矩阵 matrix设置为当前笔刷上的显式变换矩阵。//笔刷变换矩阵会与QPainter变换矩阵合并,以产生最终结果。}; //完结 class QBrush
Q_DECLARE_SHARED(QBrush)QT_END_NAMESPACE

(7)关于渐变的三个类,也在本头文件,后文介绍。

(8)

谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917773.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917773.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917773.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安科瑞智慧能源管理系统在啤酒厂5MW分布式光伏防逆流控制实践

项目信息 光伏装机1MW&#xff0c;3个并网点&#xff0c;低压接 入配电系统。 要求自发自用、余电不上网。解决方案 通过防逆流保护装置&#xff0c;做到刚性控制&#xff0c; 实现并网柜快速切断&#xff1b;通过防逆流管理系统&#xff0c;做到柔性调节&#xff0c; 实现光伏…

VUE-第二季-02

3.Vue组件化 3.1 什么是组件 (1) 传统方式开发的应用 一个网页通常包括三部分&#xff1a;结构&#xff08;HTML&#xff09;、样式&#xff08;CSS&#xff09;、交互&#xff08;JavaScript&#xff09; 传统应用存在的问题&#xff1a; ① 关系纵横交织&#xff0c;复杂…

【OpenGL】LearnOpenGL学习笔记02 - 绘制三角形、矩形

上接: https://blog.csdn.net/weixin_44506615/article/details/149861824 完整代码&#xff1a;https://gitee.com/Duo1J/learn-open-gl 一、渲染管线 在开始之前&#xff0c;我们先简单了解一下图形渲染管线 在渲染3D物体时&#xff0c;我们常用到的一种几何结构为网格模型…

Mysql的事务是什么?

简单来说&#xff0c;MySQL 实现事务的核心就像是给你的数据库操作加了一套“保险和存档”机制。它确保了你的操作要么全部成功&#xff0c;要么全部失败&#xff0c;并且在面对多人同时操作、系统突然崩溃等情况时&#xff0c;数据依然可靠、准确。 为什么需要事务呢&#xff…

测试开发:Python+Django实现接口测试工具

【测试开发天花板】DjangoVuePyTest打造企业级自动化平台&#xff5c;能写进简历的硬核项目最近被几个公司实习生整自闭了&#xff0c;没有基础&#xff0c;想学自动化又不知道怎么去学&#xff0c;没有方向没有头绪&#xff0c;说白了其实就是学习过程中没有成就感&#xff0c…

TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》

核心思想 这篇论文的核心思想是提出一种全新的、数据驱动的自主模糊聚类&#xff08;Autonomous Fuzzy Clustering, AFC&#xff09;算法。其核心创新在于&#xff0c;它巧妙地结合了模糊聚类的灵活性和基于中位数&#xff08;medoids&#xff09;聚类的可解释性&#xff0c;并…

ELK是什么

ELK 是一个广受欢迎的开源技术栈&#xff0c;用于实时采集、处理、存储、搜索、分析和可视化海量的日志数据&#xff08;log&#xff09;和机器生成的数据&#xff08;machine data&#xff09;&#xff0c;尤其是在 IT 系统监控、应用故障排查、安全分析和业务智能等领域应用广…

[硬件电路-123]:模拟电路 - 信号处理电路 - 常见的高速运放芯片、典型电路、电路实施注意事项

一、高速运放常见芯片型号及特性高速运放&#xff08;高速运算放大器&#xff09;通常指带宽&#xff08;GBW&#xff09;超过10MHz、压摆率&#xff08;SR&#xff09;高于10V/μs的器件&#xff0c;适用于视频处理、通信系统、高速数据采集等场景。以下是典型芯片及其特性&am…

关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题

关于解决WinRiver项目动态XmlElement的序列化与反序列化的问题 一、WinRiver项目流量汇总XML内容 1.1、索引可变,索引下 XmlElement 元素内容固定 1.2、如何将对象 BottomTrack 的动态内容序列化为 XML ? 1.3、如何将 XML 动态内容反序列化为对象 BottomTrack ? 二、XML 动态…

【力扣 Hot100】 刷题日记

D3 128.最长连续序列 错解 class Solution {public int longestConsecutive(int[] nums) {Arrays.sort(nums);int maxCnt 0;int cnt 0;for (int i 0; i < nums.length - 1; i) {if(nums[i] ! nums[i 1] - 1){//如果不连续&#xff0c;取cnt与maxCnt较大值&#xff0c…

飞算JavaAI编程插件:以AI之力赋能Java开发,让编码效率再升级

你是否希望自己敲代码的时候总有一位大佬在你背后帮你保驾护航。想象一下&#xff0c;当你对着Java编辑器敲代码时&#xff0c;身后站了位“隐形大神”——你刚敲出for&#xff0c;它就预判到你要遍历集合&#xff0c;自动补全带泛型的循环逻辑&#xff1b;你手滑把equals写成&…

机器学习通关秘籍|Day 03:决策树、随机森林与线性回归

目录 一、决策树 1、概念 2、基于信息增益的决策树的建立 &#xff08;1&#xff09;信息熵 &#xff08;2&#xff09;信息增益 &#xff08;3&#xff09;信息增益决策树建立步骤 3、基于基尼指数的决策树的建立 4、API 二、随机森林 1、算法原理 2、API 三、线性…

C++进阶—C++的类型转换

第一章&#xff1a;C语言中的类型转换在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与接收返回值类型不一致时&#xff0c;就需要发生类型转化&#xff0c;C语言中总共有两种形式的类型转换&#xff1a…

基于Flask的微博话题多标签情感分析系统设计

基于Flask的微博话题情感分析系统设计与实现 一、项目概述 本项目是一个轻量化的微博话题情感分析系统&#xff0c;通过Flask框架整合情感分析模型&#xff0c;实现对微博话题及评论的情感标签识别与结果展示。系统面向普通用户和研究者&#xff0c;提供简单易用的操作界面&…

TDengine 中 TDgpt 的模型评估工具

模型评估工具 TDgpt 在企业版中提供预测分析模型和异常检测模型有效性评估工具 analytics_compare&#xff0c;该工具能够使用 TDengine 中的时序数据作为 回测依据&#xff0c;评估不同预测模型或训练模型的有效性。该工具在开源版本中不可用使用评估工具&#xff0c;需要在其…

【DL学习笔记】DataLoader类功能和参数说明

文章目录一、Dataset 与 DataLoader 功能介绍抽象类Dataset的作用DataLoader 作用两者关系二、torch.utils.data.DataLoader代码示例常用参数图示num_workers设置多少合适数据加载子进程如何并行的pin_memorysampler两种sampler顺序采样 SequentialSampler随机采样 RandomSampl…

JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;内存管理是自动化的&#xff0c;这主要通过垃圾回收机制实现。JVM将堆内存划分为不同的区域&#xff0c;以便更高效地管理和回收对象。以下是关于年轻代、老年代、永久代&#xff08;或元空间&#xff09;、Eden区和Surv…

译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例

来自上传文件中的文章《Using Causal Inference for Measuring Marketing Impact: How BBC Studios Utilises Geo Holdouts and CausalPy》 本篇介绍了在传统A/B测试不适用时&#xff0c;如何利用贝叶斯合成控制方法和地理区域保留来评估营销活动效果。其亮点在于通过构建“反事…

Web开发-PHP应用TP框架MVC模型路由访问模版渲染安全写法版本漏洞

我们先使用/index.php/index/index/test&#xff0c;就是图中的test()方法 /index.php/index/index/index&#xff0c;这个回显就是111 http://127.0.0.1:83/index.php/index/index/test2?x123456 public function test2() {$x$_GET[x];return $x; } 这里再做一个案例更详细一…

FreeRTOS列表系统深度解析

FreeRTOS列表系统深度解析 一、核心数据结构 1. 列表控制块 (List_t) typedef struct xLIST {volatile UBaseType_t uxNumberOfItems; // 当前列表项数量ListItem_t * pxIndex; // 遍历指针&#xff08;用于轮询调度&#xff09;MiniListItem_t xListEnd; …