Qt中重叠多边形的透明度
Transparency of overlapping polygons in Qt
有没有简单的方法可以使两个多边形之间的重叠区域透明?最好在 Qt widgets/Qt 2D 图形 C++ 框架内内置函数。 (不是 QML)
我正在渲染从 Openstreetmap.org 中提取的地图数据,并且路径(线段)之间的一些高级关系被指定为形成多边形的内部和外部路径。
例如,一个湖泊可以有形成多边形的外部路径,以及形成湖内岛屿的多个内部路径。
我能够正确地分别构建外部多边形和内部多边形,但我很难找到一种简单的方法来使与内部多边形重叠的区域透明。
在下图中,白色区域是用白色绘制的单独多边形,但它们应该是湖/蓝色多边形的透明区域。
我尝试对外部多边形使用 QPainterPath 并调用
QPainterPath QPainterPath::subtracted(const QPainterPath &inner) const
但结果是黑屏。
我必须在渲染之前自己创建新的多边形吗?
QPainterPath 解决方案应该有效吗?我搞砸了什么?
有什么魔法可以使用 QPen/QBrush 将重叠区域涂成透明吗?
非常感谢有关如何解决此问题的任何提示。
看来我搞砸了 QPainterPath 方法。现在可以了。
我直接使用 QPolygonF 得到它,因为它有一个类似于 QPainterPath 的 subtracted() 方法。然而,在 QPolygonF 中减去的实现留下了工件,作为每个内部多边形的起始顶点与外部多边形的起始顶点之间的线。
使用 QPainterPath::addPolygon 并完美执行减法。
参考。
https://bugreports.qt.io/browse/QTBUG-53720
http://www.qtcentre.org/threads/19463-Draw-polygon-with-holes
有没有简单的方法可以使两个多边形之间的重叠区域透明?最好在 Qt widgets/Qt 2D 图形 C++ 框架内内置函数。 (不是 QML)
我正在渲染从 Openstreetmap.org 中提取的地图数据,并且路径(线段)之间的一些高级关系被指定为形成多边形的内部和外部路径。
例如,一个湖泊可以有形成多边形的外部路径,以及形成湖内岛屿的多个内部路径。
我能够正确地分别构建外部多边形和内部多边形,但我很难找到一种简单的方法来使与内部多边形重叠的区域透明。
在下图中,白色区域是用白色绘制的单独多边形,但它们应该是湖/蓝色多边形的透明区域。
我尝试对外部多边形使用 QPainterPath 并调用
QPainterPath QPainterPath::subtracted(const QPainterPath &inner) const
但结果是黑屏。
我必须在渲染之前自己创建新的多边形吗?
QPainterPath 解决方案应该有效吗?我搞砸了什么?
有什么魔法可以使用 QPen/QBrush 将重叠区域涂成透明吗?
非常感谢有关如何解决此问题的任何提示。
看来我搞砸了 QPainterPath 方法。现在可以了。
我直接使用 QPolygonF 得到它,因为它有一个类似于 QPainterPath 的 subtracted() 方法。然而,在 QPolygonF 中减去的实现留下了工件,作为每个内部多边形的起始顶点与外部多边形的起始顶点之间的线。
使用 QPainterPath::addPolygon 并完美执行减法。
参考。 https://bugreports.qt.io/browse/QTBUG-53720 http://www.qtcentre.org/threads/19463-Draw-polygon-with-holes