QGradient(渐变填充)

news2024/11/23 22:57:48

QGradient(渐变填充)

QGradient和QBrush一起使用来指定渐变填充。

Qt支持的填充:

  • 线性渐变(linear gradient),在起点和终点之间插值颜色
  • 辐射渐变(radial gradient),在焦点和围绕它的圆的端点之间插入颜色
  • 锥形渐变(Conical gradient),在中心和焦点圆之间插值颜色

 QLinearGradient(线性渐变)

线性渐变在起点和终点之间插值颜色

构造函数:

 常用的函数:

setStart()设置起点
start()返回起点
setFinalStop()设置终点
finalStop()返回终点
setSpread()设置扩散方式
setColorAt()设置颜色

需要注意的是:确定了起始点和结束点之后,会将结束点和起始点平分,起始点位置为0.0,结束点位置为1.0 ,通过比例设置颜色。

setSpread()设置扩散方式

QGradient::Spread

PadSpread垫展(默认)
ReflectSpread反射传播
RepeatSpread重复传播

 

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{
    QPainter painter(this);
    QPen pen;
    QVector<qreal> sing;
    qreal space=4;//空格数
    sing<<1<<space<<3<<space<<9<<space<<27<<space<<9<<space;//数量必须为双数
    pen.setDashPattern(sing);//设置笔的样式
    pen.setWidth(2);//设置笔的宽度
    painter.setPen(pen);//修改画家的笔

    QLinearGradient lineg(100,100,200,200);//创建一个线性渐变
    //在指定位置插入颜色,范围0-1
    lineg.setColorAt(0,Qt::red);
    lineg.setColorAt(0.5,Qt::cyan);
    lineg.setColorAt(1,Qt::green);
    lineg.setSpread(QGradient::RepeatSpread);//设置扩散方式
    painter.setBrush(lineg);//设置画刷
    painter.drawRect(200,200,100,100);//绘制矩形

}

 

 QRadialGradient(辐射渐变)

简单的径向渐变在焦点和围绕它的圆的端点之间插入颜色。扩展的径向渐变在焦点圆和中心圆之间插值颜色。由两个圆定义的圆锥体外部的点将是透明的。对于简单的径向渐变,焦点被调整为位于中心圆内,而焦点可以在扩展的径向渐变中具有任何位置。

构造函数:

QRadiaGradient(const QPointF &center, qreal centerRadius,const QPointF &focalPoint, qreal focalRadius

  • center  圆心
  • centerRadius  圆的半径
  • focalPoint   焦点
  • focalRadius   焦点半径
  • 焦点位置为0,圆环位置为1,然后在中间穿插颜色

常用的函数:

setSpread()设置渐变方式
centerRadius()返回圆的半径
center()返回中心坐标
focalRadius()返回焦点半径
focalPoint()返回焦点坐标
setxxxx可以设置以上的坐标和半径

setSpread()设置渐变方式: 

QGradient::Spread

 

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{
    QPainter painter(this);
    QPen pen;
    QVector<qreal> sing;
    qreal space=4;//空格数
    sing<<1<<space<<3<<space<<9<<space<<27<<space<<9<<space;//数量必须为双数
    pen.setDashPattern(sing);//设置笔的样式
    pen.setWidth(2);//设置笔的宽度
    painter.setPen(pen);//修改画家的笔
    
    QRadialGradient radial(QPoint(100,100),20,QPoint(150,150),20);
    radial.setColorAt(0,Qt::red);
    radial.setColorAt(0.5,Qt::cyan);
    radial.setColorAt(1,Qt::green);
    radial.setSpread(QGradient::RepeatSpread);
    painter.setBrush(radial);

    painter.drawRect(200,200,100,100);//绘制矩形
}

 QConicalGradient(锥形渐变)

 圆锥渐变围绕中心点逆时针插值颜色。

构造函数:

 

 QCoicalGradient(const QPointF &cneter,qreal angle)

  • cneter  中心点
  • angle   角度(0-360)
  • 沿逆时针方向开始的位置为0,旋转一圈后为1

常用函数:

setColorAt()

设置颜色

setCenter()设置中心点
setAngle()设置起始位置
void Widget::paintEvent(QPaintEvent *event)//绘画事件
{
    QPainter painter(this);
    QPen pen;
    QVector<qreal> sing;
    qreal space=4;//空格数
    sing<<1<<space<<3<<space<<9<<space<<27<<space<<9<<space;//数量必须为双数
    pen.setDashPattern(sing);//设置笔的样式
    pen.setWidth(2);//设置笔的宽度
    painter.setPen(pen);//修改画家的笔

    QConicalGradient conical(QPoint(200,200),60);
    conical.setColorAt(0.5,Qt::cyan);
    conical.setColorAt(0.9,Qt::black);

    painter.setBrush(conical);
    painter.drawEllipse(200,200,100,100);//绘制圆
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2019上半年-2019下半年软件设计师上午题错题总结

2019上半年 30.以下关于极限编程&#xff08;XP&#xff09;的最佳实践的叙述中&#xff0c;不正确的是&#xff08;C &#xff09;。 A.只处理当前的需求&#xff0c;使设计保持简单 B.编写完程序之后编写测试代码 C.可以按日甚至按小时为客户提供可运行的版本 D.系统最…

【附源码】Python计算机毕业设计水库洪水预报调度系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

linux进阶-构建deb软件安装包

Linux软件包的组成&#xff1a;源码包和二进制包。 文件类型保存目录普通程序/usr/binroot权限程序/usr/sbin程序配置文件/etc日志文件/var/log文档文件/usr/share/doc 源码包优点&#xff1a;开源免费、自由裁剪、修改源代码。 源码包缺点&#xff1a;安装步骤繁琐、编译时间…

【信号处理】卡尔曼滤波(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

区块链解决方案-最新全套文件

区块链解决方案-最新全套文件一、建设背景区块链的五大场景1、合同存证2、产品防伪溯源3、供应链金融4、住房租赁5、贸易金融业务二、建设架构三、建设方案四、获取 - 区块链全套最新解决方案合集一、建设背景 区块链的五大场景 1、合同存证 传统的合同存证存在着被篡改、删…

【AcWing19】【LeetCode】DFS - 46/47/39/77/216/17

文章目录代码随想录在B站的视频讲得比AcWing好模板题1&#xff1a;排列数字模板题2&#xff1a;n皇后方法一方法二LeetCode 46. 全排列LeetCode 47. 全排列 II &#xff08;重复元素&#xff09;LeetCode 39. 组合总和LeetCode 77. 组合LeetCode 216. 组合总和 IIILeetCode 17.…

黑马点评--分布式锁

黑马点评–分布式锁 基本原理与不同实现方式对比&#xff1a; 什么是分布式锁&#xff1a; ​ 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心是实现多进程之间互斥&#xff0c;而满足这一点的方式有很多&#xff0c;常见的有三种…

Leetcode799. 香槟塔

文章目录题目链接题目大意解题思路代码(C)递推递归题目链接 点我 (^_^) 题目大意 解题思路 一开始看到这个 poured 范围这么大&#xff0c;以为是可以直接推出数学公式&#xff0c;但推了半天没推出来。 然后发现&#xff0c;直接从顶部开始模拟即可&#xff0c;某个row 下的…

HIve数仓新零售项目DWB层的构建

HIve数仓新零售项目 注&#xff1a;大家觉得博客好的话&#xff0c;别忘了点赞收藏呀&#xff0c;本人每周都会更新关于人工智能和大数据相关的内容&#xff0c;内容多为原创&#xff0c;Python Java Scala SQL 代码&#xff0c;CV NLP 推荐系统等&#xff0c;Spark Flink Kaf…

October 2019 Twice SQL Injection

目录 首先&#xff0c;尝试一下回显位的个数 第二步获取数据库名称 第三步&#xff0c;获得表名 第四步&#xff0c;获得列名 最后获取flag 总结 &#xff1a;二次注入&#xff0c;首先我们需要锁定是哪里哪个文本框存在二次注入&#xff0c;以这道题为例&#xff0c;首先…

计算机视觉算法——基于Transformer的语义分割(SETR / Segmenter / SegFormer)

计算机视觉算法——基于Transformer的语义分割&#xff08;SETR / Segmenter / SegFormer&#xff09;1. SETR1.1 网络结构及特点1.1.1 Decoder1.2 实验2. Segmenter2.1 网络结构及特点2.1.1 Decoder2.2 实验3. SegFormer3.1 网络结构及特点3.1.1 Overlap Patch Merging3.1.2 E…

CMSC5713-IT项目管理之八、敏捷项目管理Agile Project Management

文章目录8.1. Traditional SDLC8.2. Agile Methodologies8.3. Scrum8.3.1. Roles8.3.2. User Story8.3.3. Product Backlog8.3.4. Release Backlog8.3.5. Sprint Backlog8.3.6. Estimation8.3.7. Burning-down Chart8.3.8. Planning Meetings8.3.8.1. Daily Scrum Meeting8.3.8…

stm32f334timer15-17

stm32f334timer15-17介绍TIM15主要功能TIM16-17主要功能TIM15/TIM16/TIM17功能描述时基单位预分频器描述计数器模式递增计数模式重复计数器时钟选择捕获/比较频道输入捕获模式PWM输入模式&#xff08;仅适用于TIM15&#xff09;强制输出模式输出比较模式组合PWM模式&#xff08…

基于Springboot+vue开发实现自行车租赁管理系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 项目编号&…

基于java学生选课系统

开发工具eclipse,jdk1.8 技术&#xff1a;java swing 数据库&#xff1a;mysql5.7 学生选课系统功能&#xff1a;管理员、教师、学生三个角色 一、管理员功能&#xff1a; 1.登录、修改密码、退出系统 2.学生管理&#xff1a;添加、修改、删除、查询 3.班级管理&#xff1a;添加…

力扣(LeetCode)23. 合并K个升序链表(C++)

模拟k路归并 朴素思想&#xff0c;类比二路归并&#xff0c; kkk 路归并多了一些参与比较的链表。我们可以在循环体内多一层循环&#xff0c;找到值最小的结点&#xff0c;插入答案链表的尾部。 朴素算法的时间复杂度 O(k∑i0k−1listsi.size())O(k\times\sum_{i0}^{k-1} lis…

做公众号1年啦

大家好&#xff0c;我是洋子 这里是北京的宇宙中心&#xff0c;西二旗地铁站&#xff0c;川流不息的人群&#xff0c;不断前进的脚步声&#xff0c;好像在告诉我们&#xff0c;新的一天工作即将开始 在地铁上&#xff0c;有人拿着手机刷着短视频&#xff0c;似乎还不想面对今…

第三十四篇 生命周期 - 易理解

通过之前一系列内容的推进来到生命周期的内容了&#xff0c;那么对于生命周期图示这块内容原文档内容有这么一段话&#xff1a;You don’t need to fully understand everything going on right now, but as you learn and build more, it will be a useful reference.&#xf…

jenkins构建gitee项目

流程是代码提交到gitee&#xff0c;jenkins中点击构建&#xff0c;自动删除目标服务器之前运行的jar包、拉取代码、构建、将jar包传到目标服务器、运行jar包。 1.下载jenkins运行 java -jar jenkins.war --httpPort8084 然后根据初始密码&#xff0c;创建账号&#xff0c;下载…

同花顺_代码解析_技术指标_P、Q

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 PBX PRICEOSC PSY PSYFS PVT QACD QLCX QLDX PBX 瀑布线 PBX1:(收盘价的M1日移动平均收盘价的M1*2日简单移动平均收盘价的M1*4日简单移动平均)/3 PBX2:(收盘价的M2日移动平均收…