Qt学习之路(25): QPainter(续)

Qt的QPainter详细介绍 QPainter是Qt框架中的一个类,主要用于在各种设备上进行2D图形绘制,如窗口、位图、打印设备等。它提供了一系列绘图函数,可以实现绘制点、线、曲线、形状、文本、图像以及复杂的绘画操作。使用QPainter创建一个QPainter对象。将QPainter与要绘图的设备(如QPixmapQImage或QWidget)关联起来,通过调用begin()函数。使用QPainter提供的绘图函数进行绘图,如drawLine()drawRect()drawText()等。绘制完毕后,调用end() 阅读详情
过去一天没有接上上章的东西,今天继续啊!

首先还是要先把上次的代码拿上来。
 
void PaintedWidget::paintEvent(QPaintEvent * event) 
{ 
        QPainter painter( this); 
        painter.drawLine(80, 100, 650, 500); 
        painter.setPen(Qt::red); 
        painter.drawRect(10, 10, 100, 400); 
        painter.setPen(QPen(Qt::green, 5)); 
        painter.setBrush(Qt::blue); 
        painter.drawEllipse(50, 150, 400, 200); 
}
 
上次我们说的是Qt绘图相关的架构,以及QPainter的建立和drawXXXX函数。可以看到,基本上代码中已经设计到得函数还剩下两个:setPen()和setBrush()。现在,我们就要把这两个函数讲解一下。

Qt绘图系统提供了三个主要的参数设置,画笔(pen)、画刷(brush)和字体(font)。这里我们要说明的是画笔和画刷。

所谓画笔,是用于绘制线的,比如线段、轮廓线等,都需要使用画笔绘制。画笔类即QPen,可以设置画笔的样式,例如虚线、实现之类,画笔的颜色,画笔的转折点样式等。画笔的样式可以在创建时指定,也可以由setStyle()函数指定。画笔支持三种主要的样式:笔帽(cap),结合点(join)和线形 (line)。这些样式具体显示如下(图片来自C++ GUI Programming with Qt4, 2nd Edition):
 
 
上图共分成三行:第一行是Cap样式,第二行是Join样式,第三行是Line样式。QPen允许你使用setCapStyle()、setJoinStyle()和setStyle()分别进行设置。具体请参加API文档。
 
所谓画刷,主要用来填充封闭的几何图形。画刷主要有两个参数可供设置:颜色和样式。当然,你也可以使用纹理或者渐变色来填充图形。请看下面的图片(图片出自Qt API 文档):
 
 
这里给出了不同style的画刷的表现。同画笔类似,这些样式也可用通过一个enum进行设置。
 
明白了这些之后我们再来看看我们的代码。首先,我们直接使用drawLine()函数,由于没有设置任何样式,所以使用的是默认的1px,,黑色,solid样式画了一条直线;然后使用setPen()函数,将画笔设置成Qt::red,即红色,画了一个矩形;最后将画笔设置成绿色,5px,画刷设置成蓝色,画了一个椭圆。这样便显示出了我们最终的样式:
 
 
另外要说明一点,请注意我们的绘制顺序,首先是直线,然后是矩形,最后是椭圆。这样,因为椭圆是最后画的,因此在最上方。
 
在我们学习OpenGL的时候,肯定听过这么一句话:OpenGL是一个状态机。所谓状态机,就是说,OpenGL保存的只是各种状态。怎么理解呢?比如,你把颜色设置成红色,那么,直到你重新设置另外的颜色,它的颜色会一直是红色。QPainter也是这样,它的状态不会自己恢复,除非你使用了各种set函数。因此,如果在上面的代码中,我们在椭圆绘制之后再画一个椭圆,它的样式还会是绿色5px的轮廓和蓝色的填充,除非你显式地调用了set进行更新。这可能是绘图系统较多的实现方式,因为无论是OpenGL、QPainter还是Java2D,都是这样实现的(DirectX不大清楚)。

本文出自 “豆子空间” 博客,请务必保留此出处http://devbean.blog.51cto.com/448512/235851

【QT】QPainter基本绘图 本文介绍QPainter基本绘图的基础知识。 阅读详情

相关推荐

Python 音频: sounddevice 使用 左声道/右声道/立体声 --- 播放,录音

# coding: utf8 """ Python 音频: 使用 sounddevice 操作声卡的 左声道, 右声道, 立体声 仅限 MME, Windows DirectSound, Windows WASAPI, Windows WDM-KS 等支持双声道的驱动类型 """ import os import sounddevice as sd import soundfile mapping_left_ch = 1 # 左声道为 1 mapping_right_ch

weixin_42019925的博客 4926

(一)Qt 将某控件、图案绘制在最前面的方法,通过QGraphicsScene模块实现

在用Qt做一些应用的时候,有可能遇到和“绘制顺序”相关的问题,即要控制一些控件之间的显示前后问题,在常用的QWidget体系中,设置前后位置是主要是通过raise(),underStack(),hide()函数,但这种操作对本人遇到的问题可能不太好办。本人需要处理的问题,可以直接看本博客的图1的效果,即“实现有一个黑点在八个黄色的QWidget子部件前方自由移动”的效果,黑点要完全在黄色方块之前出现。

wang_chao118的博客 3030

评分卡建模学习(一)————数据预处理part.3

目录六、数据处理的思路及代码(一)对缺失值的处理:在我这个数据预处理的part.1板块(二)对异常值的处理:在我这个数据预处理的part.2板块(三)数据归一化、标准化:在我这个数据预处理的part.2板块(四)非结构化数据转变+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++———————————————————————————————————————————++++++++++++++++++++++++++

Morven_dai的博客 898

qt鼠标进入窗体后,窗体自动置顶

提要 鼠标进入窗体后,窗体自动置顶,鼠标移开窗体后,窗体恢复之前的状态。

肩上风骋的博客 580

银河麒麟系统V10 sp1,安装wine 9.0

银河麒麟系统V10 sp1 x86_64,安装wine 9.0

daqinzl的专栏 1万+

【顾邦小讲堂】第十九期 RC Snubber吸收电路详解:抑制MOSFET振铃现象与过冲的设计技巧!

通过RC Snubber电路有效抑制MOSFET DS端的过冲及振铃现象,帮助工程师们在设计中提升电路的稳定性和可靠性

GBupupup的博客 3784

三角分解法求线性方程组避坑指南:搞懂这五点才算真正入门

线性方程组求解是数值分析与科学计算领域的基础课题。从高斯消元法到矩阵分解,数值算法的演进始终围绕计算效率与数值稳定性展开。三角分解法(LU分解)通过将系数矩阵拆解为下三角与上三角矩阵的乘积,实现分解一次、反复求解多右端项问题,在结构力学、电路仿真等工程场景中具有数量级的性能优势。然而,主元选取不当、病态系统误判、稀疏矩阵填充膨胀等问题,常常让初学者陷入精度崩溃的困境。理解Doolittle分解的推导逻辑、列主元策略的必要性以及条件数对误差的影响,是正确使用该算法的关键。本文从数学原理出发,结合可运行的Pyt

weixin_34234721的博客 137

开关变换器分析:大信号模型与小信号模型

是电力电子系统建模中的两类基本方法,分别用于描述系统在不同工作条件下的动态行为。它们的核心区别在于是否对变量进行线性化近似,以及适用的分析场景。

创新改变世界! 1906

QT QPainter 绘图

Qt QPainter绘图基础。。。QPaintPath 绘图路线/顺序。。。Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。

yishuihanq的博客 2654

新能源充电桩充电枪口标准

建立的标准确保了新能源汽车充电的安全性、兼容性和效率,促进了新能源汽车产业的发展。

网络安全的研究者、新能源行业的追求者 4686

AutosarMCAL开发——基于EB MCU驱动

本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 920

【QT学习十六】 QPainter

QPainter类是Qt框架中用于绘图的核心类。它提供了一组丰富的绘图工具,允许在窗口部件、图像或其他设备上进行绘制。通过QPainter类,你可以绘制文本、图像、几何图形等,并可以应用各种绘图效果和变换。

从此不归路 1686

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 92

QT QPainter::antialiasing QPainter::textAntialiasing 反走样、抗锯齿探究

QT中使用QPainter 进行自行绘图的时候,为了防止“锯齿”的出现,我们会经常使用抗锯齿属性,也叫反走样, 既: QPainter::Antialiasing //绘图抗锯齿 QPainter::TextAntialiasing //绘制的字体抗锯齿 QT 只是和很多系统的绘图API一样,提供了抗锯齿的方法,不过抗锯齿的属性默认都是关闭的,QT也不例外。 为了直观的理解抗锯齿(反走样)...

漫步繁华街的专栏 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

QT使用QPainter绘图

环境:UBUNTU14.04/QT4 简介:     QT的二维图形引擎是基于QPainter类的,QPainter既可以绘制几何图形,又可以绘制像素映射,图像和文字,除此之外还有一些高级功能。     QPainter可以画在“绘图设备上”,如QWidget,QPixmap,QImage或者QSvgGenerator,也可以与QPrinter一起使用来打印文件和创建PDF文档,这意

hao_zong_yin的博客 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

QT之QPainter用法

QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状。它也可以绘制排列的文本和像素映射。通常,它在一个“自然的”坐标系统中绘制。 QPainter 一般在部件的绘图事件 paintEvent() 中进行绘制,首先创建 QPainter 对象,然后进行图形的绘制,最后记得销毁 QPainter 对象。当窗口程序需要升级或者重新绘制时,调用此成员函数。使用 repaint()和 update() 后,调用函数 paintEvent()。 绘图工具的用法,简单的几个步骤: 1.构造一个绘图工具

sono_io的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: Qt学习之路(24): QPainter
下一篇: Qt学习之路(26): 反走样
flowingFire2012
博客等级 码龄14年 6粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值