Qt绘图 - 渐变色


线性渐变:

概述

QLinearGradient Qt 框架中用于创建线性渐变的类。线性渐变是一种从一个颜色平滑过渡到另一个 颜色的效果,其变化沿着两个点之间的直线进行。这种渐变在图形用户界面设计中非常常见,用于添加 深度、立体感或动态效果。

基本用法

要使用 QLinearGradient ,你需要执行以下几个基本步骤:
1. 创建 QLinearGradient 对象 :指定渐变的起点和终点坐标。
2. 设置颜色停靠点 :在渐变线上定义颜色和相应的位置。
3. 使用渐变创建 QBrush :用 QLinearGradient 对象来创建一个 QBrush ,然后用它在 QPainter
中进行绘制。

实例

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    //设置在渐变的起点和终点 -->  左上到右下角
    QLinearGradient lineGradient(0,0,width(),height());
    //设置渐变颜色和区间
//    lineGradient.setColorAt(0.1,Qt::black);
//    lineGradient.setColorAt(0.3,Qt::black);
//    lineGradient.setColorAt(0.5,Qt::black);
    //当然也可以使用QColor对象去细化我们的渐变过程 QColor(r,g,b,a) -- 参数:前三: 三原色,a -透明度
    lineGradient.setColorAt(0.1,QColor(0,0,0,255)); //通过透明度去细节调控渐变的效果
    lineGradient.setColorAt(0.3,QColor(0,0,0,200));
    lineGradient.setColorAt(0.5,QColor(0,0,0,180));

    lineGradient.setColorAt(1,Qt::white);

    QBrush brush(lineGradient); // 初始化画刷 为渐变色形式
    painter.setBrush(brush); //为painter对象赋值画刷
    painter.drawRect(rect());//画刷绘制 整个窗口

}

效果演示

径向渐变:

概述

QRadialGradient 是 Qt 框架中用于创建径向渐变的类。径向渐变是一种从中心点向外部辐射的颜色渐变,通常在中心点有一种颜色,而向外围渐渐变化为另一种颜色。这种渐变非常适合用于模拟光源、阴影或创建圆形的立体感。


基本用法


要使用 QRadialGradient ,你需要执行以下几个基本步骤:
1. 创建 QRadialGradient 对象:指定渐变的中心点、半径以及焦点(可选)。
2. 设置颜色停靠点:在径向渐变中定义颜色和对应的位置。
3. 使用渐变创建 QBrush :利用 QRadialGradient 对象创建一个 QBrush ,然后用
它在 QPainter 中进行绘制

实例

void Widget::paintEvent(QPaintEvent *event)
{
  QPainter painter(this);
  QRadialGradient radialGradient(400,400,200);//渐变圆心(400,400),200渐变半径
  radialGradient.setColorAt(0.1,Qt::white);
  radialGradient.setColorAt(1,Qt::black);
  painter.setBrush(QBrush(radialGradient));
  painter.drawRect(200,300,400,200);

}

效果演示

锥形渐变:

概述

QConicalGradient 是 Qt 框架中用于创建圆锥形渐变的类。圆锥渐变是一种渐变效果,其中颜色沿着圆锥的轮廓变化,类似于旋转颜色轮。这种渐变以其中心点为基点,颜色沿圆周分布,可以创建出富有动感的视觉效果。


基本用法


要使用 QConicalGradient ,你通常需要做以下几个步骤:
1. 创建 QConicalGradient 对象:指定渐变的中心点和起始角度。
2. 设置颜色停靠点:为渐变添加不同的颜色和对应的位置(角度)。
3. 使用渐变创建 QBrush :使用这个渐变对象来创建一个 QBrush ,然后应用到 QPainter 中进行绘图。
 

实例

// if  没有设置nopen的话,会有黑色的外边框

void Widget::paintEvent(QPaintEvent *event)
{


  QPainter painter(this);
  // 创建一个 QConicalGradient 对象
  QConicalGradient conicalGradient(400, 400, 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 进行绘图
  painter.setBrush(brush);
  painter.setPen(Qt::NoPen); // 无边框
  painter.drawRect(200,300,400,200); // 绘制矩形覆盖整个小部件

}





效果演示

QRadialGradient

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt5中,可以使用QPalette来设置页面的背景渐变色。首先,打开Qt Designer界面,右键点击页面,选择"改变样式表",然后点击"添加渐变"按钮。接下来,选择要改变的部分,然后选择渐变色,并点击"apply"按钮即可\[1\]。另外,还可以通过重写绘图事件来实现页面的背景颜色渐变\[3\]。在这种方法中,可以使用Qt封装好的枚举值或者自定义的颜色渐变来设置背景色\[3\]。 #### 引用[.reference_title] - *1* [QT界面GUI设计之背景和按钮美化](https://blog.csdn.net/weixin_44747240/article/details/104261991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Qt添加窗口背景图片、Label图片显示、、Label文字显示](https://blog.csdn.net/weixin_36368271/article/details/117887906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt 样式表、绘图事件设置渐变色](https://blog.csdn.net/TheKoi/article/details/125541146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值