2012-01-20 36 views
4

我需要「合併」兩個QPainterPath在一起。問題是他們似乎總是兩條不同的道路。如何合併QPainterPaths

我需要的是合併真的變成了一樣,就像一個單一的(從一個複雜的多邊形或一堆複雜的線)已經被構造出來,沒有任何內部線條或者它們是兩個事件的子路徑以前不同的路徑。這似乎是一個非常簡單而正常的任務,但我無法想象如何去做。

+0

目前還不完全清楚「似乎是兩條不同的路徑」的含義。也許它和我一樣。檢查我的答案。 – Trilarion

回答

1

我會說,united(QPainterPath)方法(QPainterPath類)是你正在尋找的,如果你還沒有嘗試過。或者可能是subtracted(QPainterPath)intersected(QPainterPath),具體取決於您嘗試實現的目標。

請您介紹一下您迄今爲止嘗試過的更多細節嗎?

1

如果啓動與兩個路徑p1和p2,每個包含單一的子路徑,則:

joined = p1.toSubpathPolygons()[0] + p2.toSubpathPolygons()[0] 
p3 = QPainterPath() 
p3.addPolygon(joined) 

也可以改變方向,每個路徑是通過使用path.toReversed接合()。 (對不起,這是Python語法,但應該幾乎對C相同++)

+0

看起來像p3 = p1 + p2(也是python語法)具有相同的效果(例如,對於p1和p2是兩個矩形緊靠在一起,它是相同的)。 – Trilarion

2

這可能有助於首先合併使用重載+操作的路徑,然後調用它simplified()QPainterPath reference

至少,這解決了我的問題,當我有兩個兩個正方形的路徑有一個共同的邊緣,沒有呼籲simplified()它仍然是兩個正方形,但它將是一個預期的矩形。