최초작성일 : 2007.01.30
최종편집일 : 2007.01.30
작성자 : 정태호
편집자 : 정태호
제목 : WPF - Element:Shape (Polyline/Polygon)
이번 강좌에서는 Polyline과 Polygon에 대해 알아보도록 하자 Polyline/Polygon은 선과 선을 연결하여 만드는 도형이다. 두 도형은 상당히 유사한 면이 많지만 Polyline은 선과 선의 끝이 만나지 않는 도형이며 Polygon은 선과 선의 끝점이 만나 완벽한 도형이 된다.
Polyline과 Polygon의 가장 중요한 속성 몇가지를 알아보겠다.
Points: 선을 만들기 위한 좌표 값
FillRule: 도형을 채우기 위한 설정(EvenOdd / FillRule)
그럼 여기서 두 도형의 차이점을 예제를 통해서 알아보겠다. 우리 개발자들은 수백번 듣는 것 보다 한 번 타이핑 해보는 것이 이해가 빠르다는 것을 그간 경험을 통해 알고 있다. 어디선가 딴지를 거는 이가 있을것 같기도 하다. 물론 코드가 어렵지 않기에 눈으로 한 번 봐도 충분히 알 수 있다. 그러나 필자는 직접 타이핑 해보라는 것을 권고한다. 왜나 한 번 쳐본다고 해서... 손해 볼 것 없기에... 아무튼 서론이 길었던 것 같았고 소스를 한줄 한줄 뜯어보자...
두 도형의 Points 속성의 좌표값이 동일하다는 것을 확인할 수 있을 것이다.
Polygon의 속성중에 Canvas.Left="150"는 도 두형의 좌표값이 동일하기에 겹치는 사태(?)가 발생할 수 있어 Canvas 왼쪽을 기준으로 150픽셀 이동한 위치에 Polygon이 위치한다.
예제의 실행모습을 보면 왼쪽이 Polyline이고 오른쪽이 Polygon이다.
다음은 두 도형에 각각 Fill 속성을 추가하여 실행결과를 확인해 보겠다.
두 도형 모두에 Fill 속성을 추가했다.
예제를 실행한 결과를 보면 도형의 선과 선이 연결되었든 되지 않았든 간에 상관없이 두 도형 모두 색이 채워져 있다는 것을 확인할 수 있다.
이제 FillRule에 대해서 알아보자. MSDN문서를 봤지만 약간 복잡하고 그리고 복잡한 내용에 비해서 별로 중요하지 않은 것 같아 그냥 넘어가려 하다가 그래도 이런 기회 아니면 언제 또 공부하냐 싶어 다시 자세히 읽어봤다. 결론적으로 FillRule은 배경색을 채우는 방법이다. 설정 가능한 값으론 NonZero와 EvenOdd가 쓰일 수 있다.
Polyline/Polygon으로 도형을 그리다 보면 면이 두 개 이상 생기는 경우가 있다. 예를 들면 십자가 모양이나 별 모양이 그렇다. 이런 경우 모든면을 모두 채워져야 할지 혹은 한면이 채워 지면 인접한면은 안채워지는 형태로 해야할지를 결정해야 한다.
좀더 쉽게 얘기하자면 특정면에 포함된 점이 있다고 하자. 이점이 도형의 바깥으로 탈출(??) 하려 할 때 도형의 선을 몇 번이나 지나느냐 횟수가 중요한 정보가 된다. NonZero의 경우는 선을 하나라도 지나는 면은 채워지는 것이고 EvenOdd인 경우 도형의 선을 지나는 횟수가 홀수이면 채워지고 짝수이면 채워지지 않는다.(그냥 지그재그로 채워진다고 보면 되는데 수학적으로 설명하려니 좀 어려워졌다)
자 그럼 간단한 샘플로 다른 점을 확인해보자. 십자가 모양과 비슷한 도형을 두개 만들 것이고 여기서 각기 다른 FillRule을 적용할것이다.
아래 그림을 보면 쉽게 FillRule속성 값 NonZero와 EvenOdd의 차이를 알 수 있다.
즉 첫번째 도형은 가운데 비어있게 되고 두번째 도형은 모든면이 채워지게 된다.
다음 강좌에서는 Path에 대해 알아보겠다...
※ 필자 정보
-----------------------------------------------------------------------------------------
Article Writer : 정태호
Mail : taediman@naver.com
H.P : Http://www.netfighter.pe.kr
-----------------------------------------------------------------------------------------
※ 테스트 환경
-----------------------------------------------------------------------------------------
운영체체 : Windows XP Professional ServicePack2
툴 : VS2005..NET
Framework 3.0 RC1
“Orcas” CTP September 2006
Windows SDK
-----------------------------------------------------------------------------------------