본문 바로가기

Development/WPF

Drawing Fixed Size Pattern

Introduction

UI를 개발하거나, 혹은 다른 이유로 WPF를 이용해 패턴을 그려야 하는 상황이 있습니다. 일반적인 방법으로는 패턴 이미지를 저장하여 패턴 이미지를 출력하거나, Brush의 Viewport 영역을 조절하여 패턴을 출력하는 방식을 사용합니다. 패턴이미지를 사용 할경우 예상되는 최대 크기로 패턴이미지를 저장하고 있어야 하기 때문에 불필요하게 많은 리소스를 차지 하게 되며, Brush의 Viewport 영역을 조절할 경우 해당 객체의 상대적인 크기에 비례하여 Viewport가 적용되기때문에 패턴의 크기가 고정적 이어야 할 경우 적합하지 않습니다.

이번시간에 소개할 내용은 Viewport 영역을 지정해 패턴을 그릴때 Viewport Unit을 사용해 패턴을 고정적인 크기로 사용하는 방법에 대해 소개합니다. ViewportUnit은 Viewport 영역이 상대값인지 절대 값인지를 지정하는 속성으로 기본값은 상대값으로 지정되어 있습니다.

왼쪽 그림은 Viewport Unit을 Absolute로 지정한 결과로 Viewport를 0,0,50,80 으로 지정했습니다. Viewport Unit이 Absolute로 지정되었기때문에 패턴의 크기가 50, 80으로 고정 되어 BoundingBox의 크기가 변경되더라도 패턴의 크기는 변경되지 않고 출력되는 패턴의 개수가 달라지게 됩니다.

반대로 오른쪽은 ViewportUnit이 기본값(RelativeToBoundingBox)으로 지정한 결과입니다. RelativeToBoundingBox의 경우 Viewport가 BoundingBox 영역의 상대적인 크기를 의미 하기 때문에 BoundingBox의 크기가 변경되어도 패턴의 개수는 일정하고 패턴의 크기가 달라지게 됩니다.