Qt 之图形(渐变填充)

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

QGradient 可以和 QBrush 组合使用,来指定渐变填充。

Qt 目前支持三种类型的渐变填充:

  • QLinearGradient:显示从起点到终点的渐变
  • QRadialGradient:以圆心为中心显示渐变
  • QConicalGradient:围绕一个中心点显示渐变

渐变类型可以使用 type() 函数来检索,类型中的每一个都是 QGradient 的子类。

渐变类型

QLinearGradientQRadialGradientQConicalGradient
这里写图片描述这里写图片描述这里写图片描述

使用 QGradientStop 类来描述渐变中过渡点的位置和颜色。例如:一个位置和一个颜色。使用 setColorAt() 函数来定义一个过渡点。或者,使用 setStops() 函数来一次定义多个过渡点。需要注意的是,后者的功能将替换当前设置的过渡点。

这是渐变的一套完整的过渡点(通过 stops() 来访问)描述渐变区域如何被填充。如果没有指定任何过渡点,那么将会从 0 点(黑色)渐变为 1 点(白色)。

QLinearGradient

QLinearGradient 显示从起点到终点的渐变。

QGradient::PadSpreadQGradient::RepeatSpreadQGradient::ReflectSpread
这里写图片描述这里写图片描述这里写图片描述
void MainWindow::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);

    // 反走样
    painter.setRenderHint(QPainter::Antialiasing, true);

    // 设置渐变色
    QLinearGradient linear(QPointF(80, 80), QPointF(150, 150));
    linear.setColorAt(0, Qt::black);
    linear.setColorAt(1, Qt::white);

    // 设置显示模式
    linear.setSpread(QGradient::PadSpread);

    // 设置画笔颜色、宽度
    painter.setPen(QPen(QColor(0, 160, 230), 2));

    // 设置画刷填充
    painter.setBrush(linear);

    // 绘制椭圆
    painter.drawRect(QRect(40, 40, 180, 180));
}

QLinearGradient 构造函数的第一个参数指定起点,第二个参数指定终点,然后显示渐变。函数setColorAt() 用于设置起点和终点之间要显示的颜色,setSpread() 可以设置起点和终点区域之外的显示模式。

QRadialGradient

QRadialGradient 类以圆心为中心显示渐变。(cx, cy) 是中点,半径(radius)是以中点为圆心的圆的半径,(fx, fy) 是渐变的起点。

QGradient::PadSpreadQGradient::RepeatSpreadQGradient::ReflectSpread
这里写图片描述这里写图片描述这里写图片描述
void MainWindow::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);

    // 反走样
    painter.setRenderHint(QPainter::Antialiasing, true);

    // 设置渐变色
    QRadialGradient radial(110, 110, 50, 130, 130);
    radial.setColorAt(0, Qt::black);
    radial.setColorAt(1, Qt::white);

    // 设置显示模式
    radial.setSpread(QGradient::ReflectSpread );

    // 设置画笔颜色、宽度
    painter.setPen(QPen(QColor(0, 160, 230), 2));

    // 设置画刷填充
    painter.setBrush(radial);

    // 绘制椭圆
    painter.drawRect(QRect(40, 40, 180, 180));
}

QRadialGradient 构造函数的第一个参数和第二个参数是 (cx, cy) 坐标,第三个参数是半径,第四个和第五个参数是 (fx, fy) 坐标。

QConicalGradient

QConicalGradient 在 (cx, cy) 坐标上以角度 (angle) 为中心显示渐变。

这里写图片描述

void MainWindow::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);

    // 反走样
    painter.setRenderHint(QPainter::Antialiasing, true);

    // 设置渐变色
    QConicalGradient conical(110, 110, 45);
    conical.setColorAt(0, Qt::black);
    conical.setColorAt(1, Qt::white);

    // 设置画笔颜色、宽度
    painter.setPen(QPen(QColor(0, 160, 230), 2));

    // 设置画刷填充
    painter.setBrush(conical);

    // 绘制椭圆
    painter.drawRect(QRect(40, 40, 180, 180));
}
  • 14
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: Qt drawobkcolor是一个设置Qt控件背景颜色的函数。在Qt框架中,许多控件都可以用这个函数设置背景颜色,比如QPushButton、QLabel、QLineEdit等等。 使用这个函数只需要传入一个颜色参数即可,可以通过Qt提供的QColor类来创建一个颜色对象,也可以直接使用RGB值进行设置。在对控件背景颜色进行设置后,用户可以使用Qt提供的paintEvent事件来将控件重新绘制。 控件背景颜色的设置可以为用户提供更好的UI交互体验,可以通过不同的颜色场景来区分控件的作用或状态。例如,在界面中使用不同的背景颜色来表示按钮的状态,可以给用户带来方便和直观的操作体验。 总之,Qt drawobkcolor是一个非常实用的函数,在UI设计和开发中可以提供丰富的颜色设置方案,帮助开发者打造更加美观、易于操作的软件界面。 ### 回答2: qt中的drawobkcolor是指绘制背景颜色。在qt图形界面编程中,我们经常需要通过绘制背景颜色来创建不同的UI界面和视觉效果。 在qt中,我们可以通过使用QBrush对象来设置绘制背景颜色。QBrush是Qt中的一个可绘制对象,用于填充几何图形或窗口背景。我们可以在自定义的图形或窗口中,使用QBrush对象中的颜色和图案样式来绘制背景颜色。 QBrush中的颜色可以使用Qt中的QColor类来设置,通过设置不同的QColor对象可以实现不同的背景颜色。同时,QBrush还提供了几种不同的绘制模式,如纹理填充线性渐变、放射渐变等。 使用drawobkcolor可以实现在qt中绘制不同的背景颜色,从而实现定制化的UI界面。通过设置不同的QBrush对象,我们可以实现多种复杂的背景颜色效果。在qt图形界面编程中,了解drawobkcolor的使用非常重要。 ### 回答3: Qt DrawBackgroundColor是一种在Qt中绘制背景颜色的方法。通过使用QPainter对象的方法,可以绘制填充矩形并指定矩形的颜色。这个颜色可以是Qt预定义的颜色,也可以是自定义的颜色。在需要更改窗口或部件的背景颜色时,Qt DrawBackgroundColor是一个非常方便和简单的方式。在使用Qt的GUI应用程序时,它可以帮助我们改变窗口或部件的外观和感觉,从而为用户提供更好的用户体验。此外,Qt DrawBackgroundColor还可以与其他Qt方法和函数一起使用,从而创建更复杂的视觉效果。Qt DrawBackgroundColor是一个强大的绘图工具,可以让开发人员轻松地实现精美的背景颜色和图案设计。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一去丶二三里

有收获,再打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值