2017-04-18 1 views
1

두 폴리곤 사이에 겹치는 영역을 투명하게 만드는 쉬운 방법이 있습니까? Qt 위젯/Qt 2D 그래픽 내의 기본 제공 함수 C++ 프레임 워크. (QML이 아님)Qt에서 겹치는 폴리곤의 투명도

Openstreetmap.org에서 추출한지도 데이터를 렌더링 중이며, 여러 가지 방식 (선분) 간의 고급 관계는 다각형을 구성하는 내부 및 외부 방법으로 제공됩니다.

예를 들어, 호수에는 다각형을 형성하는 외부 방법과 호수 내에 섬을 형성하는 몇 가지 내부 방법이있을 수 있습니다.

올바르게 외부 폴리곤과 내부 폴리곤을 만들 수 있지만 은 쉽게 찾을 수 없으므로 내부 폴리곤과 겹치는 영역을 투명하게 만들 수 있습니다.

아래 이미지에서 흰색 영역은 흰색으로 그려진 별도의 다각형이지만 대신 호수/파란색 다각형의 투명한 영역이어야합니다.

White should be transparent area of blue

나는 외부 폴리곤 QPainterPath을 사용하고

QPainterPath QPainterPath::subtracted(const QPainterPath &inner) const 

전화를 시도했지만 결과는 빈 화면이었다.

렌더링하기 전에 새로운 폴리곤을 직접 만들어야합니까?

QPainterPath 솔루션이 제대로 작동해야합니까?

중복 영역을 투명하게 칠하기 위해 QPen/QBrush를 사용하여 수행 할 수있는 마술이 있습니까?

이 접근 방법에 대한 모든 정보를 얻으실 수 있습니다.

+0

맞습니다! – Erro

+0

예상 결과는 그림과 같습니다. https://www.dropbox.com/s/qempjye8155d9iz/Screenshot%20from%202017-04-18%2015-06-02.png?dl=0 – eyllanesc

+0

이것이 내가 http://i.imgur.com/CZMPhQu.png 후에 나온 결과입니다. 지금 일하고 대답을 정교하게했습니다. – Erro

답변

1

나는 QPainterPath 접근 방식을 망쳤다. 이제 작동합니다.

QPainterPath와 비슷한 subtracted() 메서드가 있으므로 QPolygonF와 직접 작업 할 수 있습니다. 그러나 QPolygonF에서 빼기 구현은 모든 내부 다각형의 시작 꼭지점과 외부 다각형의 시작 꼭지점 사이의 선으로 아티팩트를 남겼습니다.

QPainterPath :: addPolygon을 사용하고 빼기 작업을 완벽하게 수행했습니다.

Ref. https://bugreports.qt.io/browse/QTBUG-53720 http://www.qtcentre.org/threads/19463-Draw-polygon-with-holes