Qt之描绘轮廓
Qt 轮廓
2023-09-11 14:19:13 时间
前面提到过 QPainterPath(绘图路径),除了创建和重用图形形状以外,还可以进行一些高级操作,例如:填充、描绘轮廓、裁剪。
定义原始绘图路径 QPainterPath path,调用 QPainterPathStroker::createStroke(path),以 path 为样本创建一个新的绘图路径 QPainterPath outlinePath,outlinePath 表示 path 的可填充的轮廓。 填充 outlinePath,绘制出原始绘图路径 path 的轮廓。
除此之外,还可以使用以下函数来控制轮廓的各种样式:
注意: 由 createStroke() 生成的新绘图路径(outlinePath)应仅用于指定的绘图路径(path)的轮廓,否则,可能会引发意外行为。
stroker.setCapStyle(Qt::RoundCap); // 端点风格 stroker.setJoinStyle(Qt::RoundJoin); // 连接样式 stroker.setDashPattern(Qt::DashLine); // 虚线图案 stroker.setWidth(10); // 宽度 // 生成一个新路径(可填充区域),表示原始路径 path 的轮廓 QPainterPath outlinePath = stroker.createStroke(path); // 绘制轮廓时所用的画笔(轮廓外边框灰色部分) QPen pen = painter- pen(); pen.setColor(QColor(0, 160, 230)); pen.setWidth(10); // 用指定的画笔 pen 绘制 outlinePath // painter- strokePath(outlinePath, pen); painter- setPen(pen); painter- drawPath(outlinePath); // 用指定的画刷 brush 填充路径 outlinePath painter- fillPath(outlinePath, QBrush(Qt::yellow)); }
轮廓有了,来看看原始路径的绘制:
回到 paintEvent(),如果将 drawPath() 和 drawOutline() 的位置颠倒过来,就会产生下面的效果:
很显然,原始路径会将轮廓遮挡住一部分,这是为什么呢?
关于 QPainterPathStroker::setWidth(),助手中有这么一句话:
The generated outlines will extend approximately 50% of width to each side of the given input path’s original outline.
分别用 VTK 体绘制和面绘制来实现医学图像三维重建 序言,VTK介绍: VTK 全称为 The Visualization Toolkit (可视化工具),是一个开源、跨平台、自由获取、支持并行计算的图形应用函数;拥有3D 渲染的最新工具、提供3D交互模式以及2D绘图等。
相关文章
- QT-多线程重要概念及与界面之间交互总结(混淆点分析:c#中可以在子线程中创建ui控件,qt中不能在子线程中创建ui控件)
- QT中连接Mysql数据库及增删改查实例
- QML与Qt C++ 交互机制详解
- Qt中QPainter基本绘图
- 解决qt程序运行时的cannot create Qt for Embedded Linux data directory: /tmp/qtembedded-0出错情形
- 【QT】Qt 给已经开发好的程序快速封装成动态库
- 【QT】Qt使用QJson生成json文件并保存
- 【QT】Qt 5 的程序:打印文档
- Qt编写视频监控系统67-录像计划(支持64通道7*24录像设置)
- 关于Qt中的qss样式表需要注意的坑
- Qt编写地图综合应用47-经纬度地址互相转换
- Qt编写气体安全管理系统13-短信告警
- Qt编写控件属性设计器8-网络采集
- Qt编写安防视频监控系统(界面很漂亮)
- qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新(Qt5.1解决了这个问题。但实际Qt5.7还有这个问题)
- QT目录模型QDirModel的使用(一个model同时连接tree,list,table)
- Qt中的多线程技术
- Qt之HTTPS登录
- Qt之QHostInfo
- Qt ------ stylesheet 样式
- Qt 有多少人折腾-qt for s60终于安装成功
- Qt移动应用开发(六):QML与C++互动
- [已解决]报错: qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it ...
- QT - 内存泄漏检测