Qt扫盲-QPen 理论使用总结

2023-10-22 14:37
文章标签 总结 使用 qt 理论 扫盲 qpen

本文主要是介绍Qt扫盲-QPen 理论使用总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QPen 理论使用总结

  • 一、概述
  • 二、Pen Style 画笔风格
  • 三、Cap Style 帽风格
  • 四、Join Style 连接处样式

一、概述

QPen 是Qt绘图控件里面的一个重要的组件,和QColor 一样也是类似的一个属性类。这个类就是描述一个画笔具有的属性。

一个画笔 Pen 有style(), width(), brush(), capStyle()和 joinStyle()。
笔的 style() [样式] 定义了线条的类型。brush() [笔刷] 用于填充 Pen 生成的笔画。使用QBrush类来指定填充样式。capStyle() [笔帽样式] 决定了可以使用QPainter绘制的线尾帽,而 joinStyle() [连接样式] 描述了如何绘制两条线之间的连接。笔的宽度可以以整数 ( width())和浮点(widthF())精度指定。线宽为0表示化妆笔。这意味着笔的宽度总是画一个像素宽,独立于 QPainter 的变换设置

我们可以使用相应的 setStyle(), setWidth(), setBrush(), setCapStyle() 和 setJoinStyle() 函数可以很容易地修改各种设置(注意,当改变笔的属性时,painter的笔必须重置)。

例如:

  QPainter painter(this);QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);painter.setPen(pen);

它等价于

  QPainter painter(this);QPen pen;  // creates a default penpen.setStyle(Qt::DashDotLine);pen.setWidth(3);pen.setBrush(Qt::green);pen.setCapStyle(Qt::RoundCap);pen.setJoinStyle(Qt::RoundJoin);painter.setPen(pen);

默认笔是一个纯黑色的笔刷,宽度为1,方帽样式(Qt::SquareCap)和斜角连接样式(Qt::BevelJoin)。

此外,QPen还提供了color()和setColor()方便函数,分别用于提取和设置Pen 笔刷的颜色。笔也可以进行 比较 和 写入 stream。

二、Pen Style 画笔风格

Qt提供了几个由Qt::PenStyle枚举表示的内置样式:

Qt::SolidLineQt::SolidLineQt::DotLine
在这里插入图片描述在这里插入图片描述在这里插入图片描述
Qt: DashDotLineQt: DashDotDotLineQt: CustomDashLine
在这里插入图片描述在这里插入图片描述在这里插入图片描述

只需使用setStyle()函数将Pen 样式转换为内置样式中的任何一种,除了Qt::CustomDashLine样式,我们将很快回到它。将样式设置为Qt::NoPen告诉painter不绘制线条或轮廓。Pen 的默认样式是Qt::SolidLine。

自Qt 4.1以来,也可以使用 setDashPattern() 函数指定自定义破折号模式,该函数隐式地将笔的样式转换为Qt::CustomDashLine。模式参数QVector必须指定为偶数个qreal条目,其中条目1,3,5…是破折号和2,4,6…是空格。例如,上面显示的自定义模式是使用以下代码创建的:

  QPen pen;QVector<qreal> dashes;qreal space = 4;dashes << 1 << space << 3 << space << 9 << space<< 27 << space << 9 << space;pen.setDashPattern(dashes);

请注意,破折号图案是以笔的宽度为单位指定的,例如,宽度为10的长度为5的破折号长为50像素。

可以使用 dashPattern() 函数检索当前设置的破折号模式。使用isSolid()函数来确定Pen 是否有固体填充。

三、Cap Style 帽风格

帽样式定义了如何使用QPainter绘制线条的端点。帽形样式仅适用于宽行,即宽度大于等于1的行。Qt::PenCapStyle enum提供了以下样式:

Qt::SquareCapQt::FlatCapQt::RoundCap
在这里插入图片描述在这里插入图片描述在这里插入图片描述

SquareCap样式是一个正方形的线端点,它覆盖了端点并以线宽的一半扩展到它之外。FlatCap样式是一个不覆盖行尾的方形行尾。而Qt::RoundCap样式是一个覆盖结束点的圆线结束。

默认为Qt::SquareCap。

当笔宽为0或1时是否绘制终点取决于 Cap Style 样式。使用 Qt::SquareCap 或 Qt::RoundCap它 们被绘制,使用Qt::FlatCap它们不被绘制。

四、Join Style 连接处样式

连接样式定义了如何使用QPainter绘制两条连接线之间的连接。join样式只适用于宽线,即宽度大于等于1的线。

PenJoinStyle枚举提供了以下样式:

Qt: BevelJoinQt: MiterJoinQt: RoundJoin
在这里插入图片描述在这里插入图片描述在这里插入图片描述

BevelJoin样式填充两条线之间的三角形缺口。MiterJoin样式扩展线条以一定角度相交。而Qt::RoundJoin样式填充两条线之间的圆弧。

默认为Qt::BevelJoin。

当应用Qt::MiterJoin样式时,可以使用setMiterLimit()函数来指定斜接连接可以从连接点扩展多远。miterLimit()用于减少线连接之间的伪影,其中线接近平行。

miterLimit()必须以笔的宽度为单位指定,例如,宽度为10的miterLimit为50像素长。默认的斜接限制是2,即笔宽度的两倍(像素)。

这篇关于Qt扫盲-QPen 理论使用总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/262072

相关文章

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线