使用Qt Graphics跟踪轮廓
Tracing an outline using Qt Graphics
我正在创建一个漫画书编辑器。我希望能够为语音气球使用一些相当复杂的可定制形状。
我可以画尾巴,然后画一个气球,但这意味着我在形状内部有轮廓,我只想要它的边缘。
我以为QPainterPath::simplified()
可以解决这个问题,但它似乎没有任何作用。
目前,我最好的想法是画一个有粗轮廓的形状,然后在没有轮廓的情况下再次画,但我认为这对"零宽度"轮廓不起作用。
我可以在这里想到两种可能的解决方案:
- 将"尾部"和主"气球"绘制为单个形状在这种情况下,您只需绘制一个具有单个轮廓和单个填充的单个形状
- 分别绘制,但要绘制两次。先用黑色画一个"扩展"版的形状,然后在其顶部用白色画"正常"版的图形。你根本不会画任何"线"——填充的"扩展"版本也可以达到同样的目的
第一种方法允许使用其他线条样式(虚线或摆动线),但后者允许"轮廓"稍微偏移,这样它在某些边缘看起来更厚,在其他边缘看起来更薄。
事实证明QPainterPath::simplified()
确实有效。这取决于我画的是顺时针还是逆时针(我相信顺时针画的时候可以),我认为这取决于Qt的绕组填充的工作方式。
// create a path representing the bubble and its "tail"
QPainterPath tail = tail.shape();
tail.addPath(bubble.shape());
tail.setFillRule(Qt::WindingFill);
painter->drawPath(tail.simplified);
相关文章:
- 光线跟踪器灯光反射错误
- 人脸跟踪arduino代码的优化
- 跟踪滚动条上的鼠标事件
- 如何使用新运算符跟踪在循环中创建的 QLabel
- C++:跟踪类对象
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 跟踪日志中的T.11803()是什么意思?
- 我能做些什么来跟踪矢量元素?
- 两个进程可以通过跟踪附加到同一个 PID 吗?
- 提升堆栈跟踪不显示函数名称和行号
- cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 class4.exe.sta
- 如何按指针查看堆栈跟踪
- WinDbg 不显示某些小型转储文件的完整堆栈跟踪
- C++ MFC 跟踪事件调用
- 是否可以/希望创建不可复制的共享指针模拟(以启用weak_ptr跟踪/借用类型语义)?
- 使用 Dijkstra 算法跟踪两个节点之间的最短路径
- 发布代码的 gdb 堆栈跟踪可读性如何影响 x64?
- 使用Qt Graphics跟踪轮廓
- OpenCV如何在C++中从网络摄像头(跟踪)绘制2个最大对象的轮廓
- C++ - 停止无限循环 - 跟踪轮廓