gpt4 book ai didi

c++ - Qt中重叠多边形的透明度

转载 作者:行者123 更新时间:2023-11-30 05:14:21 27 4
gpt4 key购买 nike

有没有一种简单的方法可以使两个多边形之间的重叠区域透明?最好在 Qt 小部件/Qt 2D 图形 C++ 框架内内置函数。 (不是 QML)

我正在渲染从 Openstreetmap.org 中提取的 map 数据,并且路径(线段)之间的一些高级关系被指定为形成多边形的内部和外部路径。

例如,一个湖泊可以有形成多边形的外部 channel ,以及在湖内形成岛屿的多个内部 channel 。

我能够分别正确地构建外部多边形和内部多边形,但我很难找到一种简单的方法来使与内部多边形重叠的区域透明。

在下图中,白色区域是用白色绘制的独立多边形,但它们应该是湖泊/蓝色多边形的透明区域。

White should be transparent area of blue

我尝试对外部多边形使用 QPainterPath 并调用

QPainterPath QPainterPath::subtracted(const QPainterPath &inner) const

但结果是一片空白。

我必须在渲染之前自己创建新的多边形吗?

QPainterPath 解决方案是否应该工作,我搞砸了什么?

使用 QPen/QBrush 将重叠区域绘制成透明有什么神奇的方法吗?

非常感谢有关如何处理此问题的任何提示。

最佳答案

看来我搞砸了 QPainterPath 方法。现在可以了。

我直接使用 QPolygonF 得到它,因为它有一个类似于 QPainterPath 的 subtracted() 方法。然而,在 QPolygonF 中执行 subtracted 会在每个内部多边形的起始顶点与外部多边形的起始顶点之间留下伪影。

使用 QPainterPath::addPolygon 并完美地执行减法。

引用。 https://bugreports.qt.io/browse/QTBUG-53720 http://www.qtcentre.org/threads/19463-Draw-polygon-with-holes

关于c++ - Qt中重叠多边形的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com