当前位置: 首页 > news >正文

P6 QT项目----汽车仪表盘(6.2)

6.2  渐变色
6.2.1 线性渐变
QLinearGradient Qt 框架中用于创建线性渐变的类。线性渐变是一种从一个颜色平滑过渡到另一个颜色的效果,其变化沿着两个点之间的直线进行。这种渐变在图形用户界面设计中非常常见,用于添加深度、立体感或动态效果。
基本用法
要使用 QLinearGradient ,你需要执行以下几个基本步骤:
1. 创建 QLinearGradient 对象 :指定渐变的起点和终点坐标。
2. 设置颜色停靠点 :在渐变线上定义颜色和相应的位置。
3. 使用渐变创建 QBrush :用 QLinearGradient 对象来创建一个 QBrush ,然后用它在 QPainter
中进行绘制。
示例代码
以下是一个创建和使用 QLinearGradient 的示例代码:
include <QPainter>
#include <QLinearGradient>
void MyWidget::paintEvent ( QPaintEvent * ) {
        // 创建一个 QLinearGradient 对象
        QLinearGradient linearGradient ( 0 , 0 , 100 , 100 ); // 起点 (0, 0) 终点 (100, 100)
        // 设置颜色停靠点
        linearGradient . setColorAt ( 0.0 , Qt::red ); // 起点颜色
        linearGradient . setColorAt ( 1.0 , Qt::blue ); // 终点颜色
        // 使用这个渐变创建 QBrush
        QBrush brush ( linearGradient );
        // 使用 QBrush 进行绘图
        QPainter painter ( this );
        painter . setBrush ( brush );
        painter . setPen ( Qt::NoPen ); // 无边框
        painter . drawRect ( this -> rect ()); // 绘制矩形覆盖整个小部件
}
在这个例子中, QLinearGradient 创建了一个从红色到蓝色的渐变,其方向是从小部件的左上角 (0, 0) 到右下角 (100, 100)
注意事项
QLinearGradient 的颜色变化是沿着两个指定点之间的直线进行的。通过改变这些点的位置,你
可以控制渐变的方向和长度。
setColorAt() 方法的第一个参数是一个介于 0.0 1.0 之间的浮点数,表示颜色在渐变线上的位
置。 0.0 通常对应于起点, 1.0 对应于终点。
你可以设置多个颜色停靠点来创建更复杂的渐变效果。例如,你可以在 0.0 处设置一种颜色,在 0.5 处设置另一种颜色,在 1.0 处再设置一种颜色。
使用 QLinearGradient 创建的 QBrush 可以用于填充任何形状,包括矩形、椭圆、多边形等。
为了获取更好的视觉效果,可以启用 QPainter 的抗锯齿选项( QPainter::Antialiasing )。
请注意,当窗口小部件的大小发生变化时,渐变的效果可能也会随之改变,除非你相应地调整渐变
的起点和终点坐标或使用其他方法来适应大小变化。
6.2.2  径向渐变
QRadialGradient Qt 框架中用于创建径向渐变的类。径向渐变是一种从中心点向外部辐射的颜色渐 变,通常在中心点有一种颜色,而向外围渐渐变化为另一种颜色。这种渐变非常适合用于模拟光源、阴 影或创建圆形的立体感。
基本用法
要使用 QRadialGradient ,你需要执行以下几个基本步骤:
1. 创建 QRadialGradient 对象 :指定渐变的中心点、半径以及焦点(可选)。
2. 设置颜色停靠点 :在径向渐变中定义颜色和对应的位置。
3. 使用渐变创建 QBrush :利用 QRadialGradient 对象创建一个 QBrush ,然后用
它在 QPainter 中进行绘制。
示例代码
以下是一个创建和使用 QRadialGradient 的示例代码:
include <QPainter>
#include <QRadialGradient>
void MyWidget::paintEvent ( QPaintEvent * ) {
        // 创建一个 QRadialGradient 对象
        QRadialGradient radialGradient ( 50 , 50 , 50 ); // 中心和半径 (50, 50, 50)
        // 可选:设置焦点
        // radialGradient.setFocalPoint(30, 30);
        // 设置颜色停靠点
        radialGradient . setColorAt ( 0.0 , Qt::yellow ); // 中心颜色
        radialGradient . setColorAt ( 1.0 , Qt::black ); // 外围颜色
        // 使用这个渐变创建 QBrush
        QBrush brush ( radialGradient );
        // 使用 QBrush 进行绘图
        QPainter painter ( this );
        painter . setBrush ( brush );
        painter . setPen ( Qt::NoPen ); // 无边框
        painter . drawRect ( this -> rect ()); // 绘制矩形覆盖整个小部件
}
在这个例子中, QRadialGradient 创建了一个从中心的黄色向外围的黑色渐变。渐变的中心和半径都设置在 (50, 50, 50)
注意事项
setColorAt() 方法的第一个参数是一个介于 0.0 1.0 之间的浮点数,表示颜色在径向渐变中的
位置。 0.0 通常对应于中心点, 1.0 对应于边缘。
通过添加多个颜色停靠点,你可以创建更复杂的径向渐变效果。
setFocalPoint() 方法允许你设置焦点位置,这是渐变颜色开始变化的点,可以与中心点不同。
使用 QRadialGradient 创建的 QBrush 可以用于
填充任何形状,如矩形、椭圆、多边形等。
为了获得更好的视觉效果,可以启用 QPainter 的抗锯齿选项( QPainter::Antialiasing )。
当绘制较大区域时,可以通过调整渐变的半径和中心点来控制渐变效果的扩展。
QRadialGradient 非常适用于创建像按钮、指示灯或其他需要有深度感和立体感的界面元素。
6.2.3 圆锥形渐变
QConicalGradient Qt 框架中用于创建圆锥形渐变的类。圆锥渐变是一种渐变效果,其中颜色沿着圆锥的轮廓变化,类似于旋转颜色轮。这种渐变以其中心点为基点,颜色沿圆周分布,可以创建出富有动感的视觉效果。
基本用法
要使用 QConicalGradient ,你通常需要做以下几个步骤:
1. 创建 QConicalGradient 对象 :指定渐变的中心点和起始角度。
2. 设置颜色停靠点 :为渐变添加不同的颜色和对应的位置(角度)。
3. 使用渐变创建 QBrush :使用这个渐变对象来创建一个 QBrush ,然后应用到 QPainter 中进行绘图。
示例代码
下面是一个如何创建和使用 QConicalGradient 的简单示例:
#include <QPainter>
#include <QConicalGradient>
void MyWidget::paintEvent ( QPaintEvent * ) {
        // 创建一个 QConicalGradient 对象
        QConicalGradient conicalGradient ( 100 , 100 , 0 ); // 中心点 (100, 100) ,起始角度 0
        // 添加颜色停靠点
        conicalGradient . setColorAt ( 0.0 , Qt::red );
        conicalGradient . setColorAt ( 0.5 , Qt::blue );
        conicalGradient . setColorAt ( 1.0 , Qt::red );
        // 使用这个渐变创建 QBrush
        QBrush brush ( conicalGradient );
        // 使用 QBrush 进行绘图
        QPainter painter ( this );
        painter . setBrush ( brush );
        painter . setPen ( Qt::NoPen ); // 无边框
        painter . drawRect ( this -> rect ()); // 绘制矩形覆盖整个小部件
}
在这个例子中, QConicalGradient 被用来创建一个从红色到蓝色再回到红色的渐变。渐变的中心设置在点 (100, 100) ,并且从 0 度开始旋转。
注意事项
QConicalGradient 的颜色是沿着圆周分布的,其中 0.0 1.0 在圆周上是相同的位置。
你可以通过添加多个颜色停靠点来创建更复杂的渐变效果。
QConicalGradient
在使用时,角度是按照顺时针方向测量的,起始点( 0 度)通常在三点钟方向。
为了达到最佳的渲染效果,可以启用 QPainter 的抗锯齿渲染提示
QPainter::Antialiasing )。
QConicalGradient 非常适合用于创建旋转或动态效果的图形,例如加载指示器、进度条或任何需
要圆周颜色变化的场景。
http://www.dtcms.com/a/251249.html

相关文章:

  • 原型模式Prototype Pattern
  • 第二十九场 蓝桥算法赛
  • 华为OD机试_2025 B卷_运维日志排序(Python,100分)(附详细解题思路)
  • 136. 只出现一次的数字
  • CSP 2024 入门级第一轮(88.5)
  • NodeJS中老生代和新生代和垃圾回收机制
  • Luckfox Pico Pi RV1106学习<3>:支持IMX415摄像头
  • 深度学习:PyTorch自动微分模块
  • 修改了xml布局代码,页面使用了databinding,此时不开启kapt也可以吗
  • Yolo11改进策略:Block改进|MKP,多尺度卷积核级联结构,增强感受野适应性|即插即用|AAAI 2025
  • c++26新功能—契约与概念
  • 华为OD-2024年E卷-英文输入法[100分] -- python
  • 深入实践Caffeine+Redis两级缓存架构:从原理到高可用设计
  • ubuntu 22.04 安装部署elk(elasticsearch/logstash/kibana) 7.10.0详细教程
  • 【JVM】- 内存模式
  • 如何在Windows上使用qemu安装ubuntu24.04服务器?
  • 【Elasticsearch】文档(二):更新
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(四)
  • Matlab数字信号处理——基于GUI的ECG信号处理平台设计与实现
  • 解决docker下的Linux系统调用GPU失败
  • STM32 HAL库学习 RNG篇
  • 国产操作系统-银河麒麟本地化部署Ollama国产开源的AI大模型Qwen3
  • 华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio平台与Cherry Studio搭建知识库问答助手
  • 【运维系列】【ubuntu22.04】安装Docker
  • Matlab | matlab中100个常用函数全面解析
  • Spring事务简介
  • wordpress外贸独立站搭建步骤
  • 构建多智能体(AI Agent)的高效协作平台——CrewAI探索
  • 从代码学习深度学习 - 词的相似性和类比任务 PyTorch版
  • 电池预测 | 第32讲 Matlab基于CNN-BiLSTM-Attention的锂电池剩余寿命预测,附锂电池最新文章汇集