angular网站模板下载百度竞价推广开户价格
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 非常适合用于创建旋转或动态效果的图形,例如加载指示器、进度条或任何需
要圆周颜色变化的场景。
