728x90
WPF에는 Layout Transform 과 Render Transform 의 두 가지 트랜스폼이 존재한다. 각각을 적용했을 때 다른 결과가 나타나서 둘의 차이가 뭔지 궁금해서 찾아본 결과 명료하게 정리된 포스팅이 있어 다시 정리해보려고 한다.
아래의 내용은 다음의 두 블로그를 참조했다.
http://www.vbdotnetheaven.com/uploadfile/7b0949/rendertransform-and-layouttransform-in-wpf/
WPF에서 레이아웃을 렌더링할 때는 다음의 순서를 거친다.
- Measure : 각 엘리먼트의 DesiredSize 를 연산
- Arrange : child 엘리먼트들의 위치를 부모 엘리먼트 기준으로 연산
- Render : 연산된 ui(user interface)를 화면에 렌더링
두 트랜스폼의 차이점은 트랜스폼이 이루어지는 시점인데, 각 트랜스폼은 다음의 시점에 이루어진다.
- LayoutTransform
- Measure
- Arrange
- RenderTransform
- Render
따라서 LayoutTransform의 결과는 Measure, Arrange 의 연산 결과에 반영되지만 RenderTransform의 결과는 이에 반영되지 않고 렌더링 과정에만 반영된다. 따라서 퍼포먼스는 RenderTransform의 경우가 LayoutTransform의 결과보다 좋다.
차이를 확인하기 위해 간단한 프로젝트를 만들어서 테스트해보았다.
StackPanel 에 버튼을 3개씩 만들고, 두번째 버튼에 RotateTransform 을 각각 LayoutTransform, RenderTransform으로 적용한 결과이다.
결론은, 가능하다면 RenderTransform을 사용하는 것이 좋고(더 빠르기 때문), 사용이 불가능하다면 LayoutTransform을 사용하면 되겠다.
'Dev > WPF' 카테고리의 다른 글
[WPF] Custom Routed Event (라우팅 이벤트 만들기) (0) | 2012.09.11 |
---|---|
[WPF] Routed Event (라우팅 이벤트) (0) | 2012.09.11 |
[WPF] Zoom In/Out & Rotate (줌인/줌아웃 & 회전) (2) | 2012.08.21 |
[WPF] Custom ContentControl (컨텐트컨트롤 커스텀화) (0) | 2012.08.07 |