2012-01-20 2 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를 사용하여 결합된다(). 는 (죄송합니다, 이것은 파이썬 구문입니다하지만 C++에 대한 거의 동일해야합니다)

+0

p3 = p1 + p2 (파이썬 구문)가 동일한 효과를 갖는 것처럼 보입니다 (예 : p1과 p2가 서로 인접한 두 개의 직사각형이 동일 함). – Trilarion

2
처음 오버로드 + 연산자를 사용하여 경로를 병합 한 다음에 simplified()를 호출하는 데 도움이 될

. QPainterPath reference

내가 예상 한 사각형 것이다 공통으로하고 여전히 두 개의 사각형이 될 것 simplified()에 호출하지 않고 있지만, 하나의 가장자리를 가지고 두 개의 사각형 두 가지 경로를했을 때 나를 위해 문제를 해결하는 최소한.

관련 문제