简述

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

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

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

  • QRadialGradient:以圆心为中心显示渐变。

  • QConicalGradient:围绕一个中心点显示渐变。

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

渐变类型

QLinearGradient QRadialGradient QConicalGradient

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

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

QLinearGradient

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

效果

QGradient::PadSpread QGradient::RepeatSpread QGradient::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::PadSpread QGradient::RepeatSpread QGradient::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));
}

Qt之图形(渐变填充)的更多相关文章

  1. Qt 2D绘图 渐变填充(三种渐变方式)

    在qt中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变.如果能熟练应用它们,就能设计出炫目的填充效果. 线性渐变: 1.更改函数如下: void Dialog::paintEvent(QPai ...

  2. Qt 2D绘图之一:基本图形绘制和渐变填充

    Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.它们三者的关系如下图所示: QP ...

  3. QT 基本图形绘制

    QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿       QPainter::TextAntialiasing 在可能的情况下,文 ...

  4. Qt之图形(QPainter的基本绘图)

    简述 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类. QPainter用来执行 ...

  5. [Xcode 实际操作]二、视图与手势-(7)UIView视图的渐变填充

    目录:[Swift]Xcode实际操作 本文将演示创建一个具有渐变填充色的图形 import UIKit class ViewController: UIViewController { overri ...

  6. Canvas入门(2):图形渐变和图像形变换

    来源:http://www.ido321.com/986.html 一.图形渐变(均在最新版Google中测试) 1.绘制线性渐变 1: // 获取canvas 的ID 2: var canvas = ...

  7. QT:图形的描画(折线,柱状图,多边形)

    1. 创建一个继承于QWidget的类,重载一个叫paintEvent的函数, 2. 在paintEvent函数中调用Qpainter类,此类是一个重量级类,在paintEvent函数尽量只创建一次 ...

  8. Qt之图形(QPainterPath)

    简述 QPainterPath 类(绘图路径)提供了一个容器,用于绘图操作,可以创建和重用图形形状. 绘图路径是由许多图形化的构建块组成的对象,例如:矩形.椭圆.直线和曲线.构建块可以加入在封闭的子路 ...

  9. Qt之图形(绘制漂亮的圆弧)

    简述 综合前面对二维绘图的介绍,想必我们对一些基本绘图有了深入的了解,下面我们来实现一些漂亮的图形绘制. 简述 圆形 效果 源码 弧形 效果 源码 文本 效果 源码 旋转 效果 源码 圆形 经常地,我 ...

随机推荐

  1. [宏]_IO, _IOR, _IOW, _IOWR 宏的用法与解析

    在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...

  2. crm 系统项目(三) 业务

    1. 项目背景 crm系统是某教育平台正在使用的项目,系统主要为 销售部.运营部.教质部门提供管理平台,随着公司规模的扩展,对公司员工的业务信息量化以及信息化建设越来越重要. crm系统为不同角色的用 ...

  3. 紫书 习题7-8 UVa 12107 (IDA*)

    参考了这哥们的博客 https://blog.csdn.net/hyqsblog/article/details/46980287  (1)atoi可以char数组转int, 头文件 cstdlib ...

  4. LoadRunner监控Window/Unix系统资源的配置

    LoadRunner监控Window/Unix系统资源需要做两件事情: 1.配置被监视的服务器,以便于LoadRunner能够获取系统资源使用情况的数据 2.在LoadRunner的Controlle ...

  5. HDU 1131

    N个节点的不同的树的数目.这样 随便取一个节点作为根,那么他左边和右边的儿子节点个数就确定了,假定根节点标号为x,那么左子树的标号就从1到x-1,共x-1个,右子树的标号就从x+1到n,共n-x个,那 ...

  6. Application Loader提交ipa文件出现ERROR ITMS-90022问题解决方式

    话说在提交app到AppStore时出现了一些问题.网上找了一些资料,但不并具体.因此我做了一个总结,方便我以后遇到时可查询. 也希望能帮助遇到这个问题的提供解决方式. ERROR ITMS-9002 ...

  7. c/c++常见试题

  8. 改动android 系统时间

    命令如 date -s "yyyymmdd.[[[hh]mm]ss]" 直接在CRT上执行,举例:date -s "20120801.120503" 但在adb ...

  9. C#帮助控件HelpProvider的使用

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. IBM AppScan官方帮助文档错别字缺陷,IBM的測试人员也太粗心了吧

    袁术=元素?