2011-10-11 1 views
5

QGraphicsPolygonItem을 사용하고 있으며 항상 시작점과 끝점을 연결하는 것으로 나타났습니다.QGraphicsPolygonItem 열려있는 (닫히지 않은) 폴리곤 그리기

나는 다각형 용어가 정확히 의미하는 것을 알고 있으며, 내가 찾고있는 것은 "폴리 라인"또는 "다각형 체인"입니다. 나는 QGraphicsItem 서브 클래스에서 그런 것을 발견하지 못했습니다.

어떻게 QGraphics Framework에서 다각형 체인을 그립니 까? QGraphicsPolygonItem의 속성이나이를 수행하는 클래스가 있습니까?

답변

3

QPainterPath를 사용하고 lineTo 메서드를 사용하여 yors 폴리 라인 포인트를 입력 한 다음 QGraphicsPathItem을 사용하여 그래픽 항목을 만들 수 있습니다.

또는 여러 QGraphicsLineItem을 하나의 QGraphicsItemGroup에 결합하는 방법에 대해 생각할 수도 있지만, 선을 함께 정렬하는 데주의해야하므로 더 어렵습니다.

이게 당신이 찾고 있는게 있니?

편집 :

QPainterPath 분명히 당신은 라인의 그룹으로 남아 있습니다, 경로를 폐쇄한다.

EDIT2 :

을 혼란 죄송하지만 HostileFork 바로 것 같다 - 당신은 그냥 QPainterPath을 사용하고 채워지지 않은 경로를 유지하기 위해 pathItem->setBrush(QBrush(Qt::transparent));를 호출합니다.

+0

QPainterPath는 경로를 자동으로 닫지 않으므로 lineTo 및 moveTo 시퀀스를 사용하는 것이 가장 좋은 방법 일 수 있습니다. 채우기 때문에 혼란 스러울 수 있습니까? 채우기를 원하지 않으면'pathItem-> setBrush (QBrush (Qt :: transparent));를 호출해야한다. – HostileFork

2

비슷한 문제가있어서 QGraphicsPathItem 클래스를 사용하여 해결했습니다. 다음 코드에서 다각형 (즉 시동 가리킨 QPolygonF는 종점 다르다) 비 폐쇄 QPolygonF 개체이다

QPainterPath path = new QPainterPath(); 
path.addPolygon(polygon); 
QGraphicsPathItem contour = new QGraphicsPathItem(path); 
contour.setPen(new QPen(QColor.black)); 

이 QGraphicsPathItem 오브젝트를 표시하는 경우, 시작 포인트는 (이론적으로) 끝점에서 연결이 끊어졌습니다.

죄송합니다.이 예제 코드는 Java로되어 있습니다. 그러나 메커니즘은 C++에서와 동일해야합니다.