我需要「合併」兩個QPainterPath
在一起。問題是他們似乎總是兩條不同的道路。如何合併QPainterPaths
我需要的是合併真的變成了一樣,就像一個單一的(從一個複雜的多邊形或一堆複雜的線)已經被構造出來,沒有任何內部線條或者它們是兩個事件的子路徑以前不同的路徑。這似乎是一個非常簡單而正常的任務,但我無法想象如何去做。
我需要「合併」兩個QPainterPath
在一起。問題是他們似乎總是兩條不同的道路。如何合併QPainterPaths
我需要的是合併真的變成了一樣,就像一個單一的(從一個複雜的多邊形或一堆複雜的線)已經被構造出來,沒有任何內部線條或者它們是兩個事件的子路徑以前不同的路徑。這似乎是一個非常簡單而正常的任務,但我無法想象如何去做。
我會說,united(QPainterPath)
方法(QPainterPath類)是你正在尋找的,如果你還沒有嘗試過。或者可能是subtracted(QPainterPath)
或intersected(QPainterPath)
,具體取決於您嘗試實現的目標。
請您介紹一下您迄今爲止嘗試過的更多細節嗎?
如果啓動與兩個路徑p1和p2,每個包含單一的子路徑,則:
joined = p1.toSubpathPolygons()[0] + p2.toSubpathPolygons()[0]
p3 = QPainterPath()
p3.addPolygon(joined)
也可以改變方向,每個路徑是通過使用path.toReversed接合()。 (對不起,這是Python語法,但應該幾乎對C相同++)
看起來像p3 = p1 + p2(也是python語法)具有相同的效果(例如,對於p1和p2是兩個矩形緊靠在一起,它是相同的)。 – Trilarion
這可能有助於首先合併使用重載+
操作的路徑,然後調用它simplified()
。 QPainterPath reference
至少,這解決了我的問題,當我有兩個兩個正方形的路徑有一個共同的邊緣,沒有呼籲simplified()
它仍然是兩個正方形,但它將是一個預期的矩形。
目前還不完全清楚「似乎是兩條不同的路徑」的含義。也許它和我一樣。檢查我的答案。 – Trilarion