Transparency of overlapping polygons in Qt
Is there an easy way to make an overlapping area between two polygons transparent? Preferably built-in functions within the Qt widgets/Qt 2D graphics C++ framework. (not QML)
I'm rendering map data extracted from Openstreetmap.org and some advanced relations between ways (line segments) are given as inner and outer ways that form polygons.
For example, a lake can have outer ways that form the polygon, and several inner ways that form islands within the lake.
I am able to correctly build the outer polygons and inner polygons separately but I struggle to find an easy way to make the area that overlaps with inner polygons transparent.
In the image below the white areas are separate polygons drawn with white, that's the area that I'd like to make transparent.
I tried to use QPainterPath for the outer polygons and call
QPainterPath QPainterPath::subtracted(const QPainterPath &inner) const
but the result was a blank screen.
Do I have to create new polygons myself prior to rendering?
Should the QPainterPath solution work and I messed something up?
Is there some magic that can be done using QPen/QBrush to paint overlapping areas transparent?
Any tips on how to approach this is highly appreciated.
It seems I messed up the QPainterPath-approach. It works now.
I got it working with QPolygonF directly, as it has a subtracted() method similar to QPainterPath. However, the implementation of subtracted in QPolygonF left artifacts as lines between start vertex of every inner polygon to the start vertex of the outter polygon.
Using QPainterPath::addPolygon and performing the subtraction worked flawlessly.