QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
来源:互联网 发布:淘宝客女装佣金 编辑:程序博客网 时间:2024/05/20 21:20
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_OBJECTpublic: 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);}
- 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): 渐变填充
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】
- 浏览器如何工作
- TF-IDF
- MFC CheckBox的使用
- UNIX Shell循环控制—while
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- android获取手机信息大全
- 外部时钟与内部时钟区别、作用、使用条件
- tomcat 运行时内存溢出解决
- 韩语语法(1)
- [Java]远程下载文件并读取实例方法
- 使用hibernate保存blob大数据,ibatis查询blob大数据
- Eclipse快捷键-方便查找
- 时间管理的时间法则