QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
来源:互联网 发布:芳香理疗师考证知乎 编辑:程序博客网 时间:2024/05/10 05:21
QT:渐变
渐变,是指逐渐的,有规律性的变化,是一种规律性很强的现象。Qt提供了一个与渐变相关的QGradient类,目前支持三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(QRadialGradient)、角度渐变(QConicalGradient),如下图所示:
从左到右依次为:线性渐变、辐射渐变、角度渐变
下面来看一下实现的代码,由于程序较简单,所以将解释都加在了每行代码的后边:
- #include<QtGui/QApplication>
- #include"gradient_test.h"
- intmain(intargc,char*argv[])
- {
- QApplicationa(argc,argv);
- gradient_testw;
- w.show();
- returna.exec();
- }
- //gradient_test.h:
- #ifndefGRADIENT_TEST_H
- #defineGRADIENT_TEST_H
- #include<QtGui/QWidget>
- #include<QPainter>
- #include<QStyleOption>
- #include<QResizeEvent>
- classgradient_test:publicQWidget
- {
- Q_OBJECT
- public:
- explicitgradient_test(QWidget*parent=0);
- virtualQSizesizeHint()const;
- protected:
- voidpaintEvent(QPaintEvent*event);
- voidresizeEvent(QResizeEvent*event);
- private:
- QSizeinitSize;
- QImagewheel;
- voiddrawLine(constQSize&newSize);
- };
- #endif//GRADIENT_TEST_H
- //gradient_test.cpp:
- #include"gradient_test.h"
- gradient_test::gradient_test(QWidget*parent)
- :QWidget(parent),initSize(300,300)
- {
- resize(650,250); //窗口大小
- }
- voidgradient_test::drawLine(constQSize&newSize)
- {
- QPainterpainter(&wheel); //wheel作为画图对象?
- painter.setRenderHint(QPainter::Antialiasing); //消除锯齿
- wheel.fill(Qt::white);
- //线性渐变
- QLinearGradientlinearGradient(20,20,150,150);
- //创建了一个QLinearGradient对象实例,参数为起点和终点坐标,可作为颜色渐变的方向
- //painter.setPen(Qt::NoPen);
- linearGradient.setColorAt(0.0,Qt::green);
- linearGradient.setColorAt(0.2,Qt::white);
- linearGradient.setColorAt(0.4,Qt::blue);
- linearGradient.setColorAt(0.6,Qt::red);
- linearGradient.setColorAt(1.0,Qt::yellow);
- painter.setBrush(QBrush(linearGradient));
- painter.drawEllipse(10,10,200,200);
- //前面为左边,后面两个参数为横轴和纵轴,上面的四行分别设置渐变的颜色和路径比例
- //辐射渐变
- QRadialGradientradialGradient(310,110,100,310,110);
- //创建了一个QRadialGradient对象实例,参数分别为中心坐标,半径长度和焦点坐标,如果需要对称那么中心坐标和焦点坐标要一致
- radialGradient.setColorAt(0,Qt::green);
- //radialGradient.setColorAt(0.2,Qt::white);
- radialGradient.setColorAt(0.4,Qt::blue);
- //radialGradient.setColorAt(0.6,Qt::red);
- radialGradient.setColorAt(1.0,Qt::yellow);
- painter.setBrush(QBrush(radialGradient));
- painter.drawEllipse(210,10,200,200);//在相应的坐标画出来
- //弧度渐变
- QConicalGradientconicalGradient(510,110,0);
- //创建了一个QConicalGradient对象实例,参数分别为中心坐标和初始角度
- conicalGradient.setColorAt(0,Qt::green);
- conicalGradient.setColorAt(0.2,Qt::white);
- conicalGradient.setColorAt(0.4,Qt::blue);
- conicalGradient.setColorAt(0.6,Qt::red);
- conicalGradient.setColorAt(0.8,Qt::yellow);
- conicalGradient.setColorAt(1.0,Qt::green);
- //设置渐变的颜色和路径比例
- painter.setBrush(QBrush(conicalGradient));
- painter.drawEllipse(410,10,200,200);//在相应的坐标画出来
- }
- QSizegradient_test::sizeHint()const
- {
- returnQSize(height(),height());
- }
- voidgradient_test::resizeEvent(QResizeEvent*event)
- {
- wheel=QImage(event->size(),QImage::Format_ARGB32_Premultiplied);
- wheel.fill(palette().background().color());
- drawLine(event->size());
- update();
- }
- voidgradient_test::paintEvent(QPaintEvent*event)
- {
- QPainterpainter(this);
- QStyleOptionopt;
- opt.init(this);
- painter.drawImage(0,0,wheel);
- style()->drawPrimitive(QStyle::PE_Widget,&opt,&painter,this);
- }
0 0
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- QT渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- 渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- pyqt4文档阅读(9.2):QLinearGradient-QRadialGradient-QConicalGradient
- 关于qt中的辐射渐变的使用 QRadialGradient
- 关于qt中的QLinearGradient 线性渐变的使用
- Qt/C++ QLinearGradient线性渐变使用方法!!少走弯路啊
- QLinearGradient 绘制渐变效果
- QT学习 渐变填充
- QT学习笔记-渐变填充
- QT学习 渐变填充QGradient
- Qt学习之路(27): 渐变填充
- Qt学习之路(27): 渐变填充
- Qt学习之路(27): 渐变填充
- poj1609
- 关于CCSv5 Debug下image功能使用
- 经期总失眠源于激素“打扰” 缓解紧张情绪是关键
- 关闭窗口后刷新页面
- Android生命周期函数执行顺序
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- java API------日期类
- Android SharedPreferences的使用
- 项目测试作品
- 希尔排序
- html学习笔记(三)——html编辑
- DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之4: Chap6: The Rendering Pipeline
- 关于QscrollArea的使用
- Linux系统下如何查看及修改文件读写权限