1 Results for '오브젝트 모델'

  1. 2007.08.10 실버라이트 렌더링 과정에 대한 발표 자료. (7)

스터디 그룹 은광여고에서 발표하기 위해 작성한 PPT 자료에요.

WPF와는 달리 실버라잇의 내부 렌더링 과정은 문서화되지 않았는데요, 아마도 WPF와 거의 유사한 구조로 되어 있을 거라고 '추측'하고 작성한 자료에요. 실제 구조와 거리가 있을 수 있다는 건 염두하셔야 할 것 같네요.

처음에 설명하는 개체 모델에 관한건 특별한 내용은 없구요 다만 아래의 내용으로 정리할 수 있을 것 같아요.

1. 모든 컨트롤은 최상위의 DependencyObject로부터 파생되어 Visual ->UIElement->FrameworkElement 순서의 상속 구조를 갖습니다.
2. WPF의 광범위한 지원과 달리 실버라이트의 Visual은 화면에 표시될 수 있는 최소 단위를 의미합니다. 하지만 사용자가 직접 만들 수는 없습니다.
3. UIElement는 마우스나 키보드 이벤트 등의 주요 인터랙션과 Transform 인터페이스를 제공합니다.
4. FrameworkElement는 자신을 포함하는 컨테이너를 반환하는 Parent 속성을 제공하며 UI구성 요소의 실질적인 최소 단위가 됩니다.
5. Panel은 Children 속성을 통해 개체 컨테이너를 제공하는 실버라이트의 유일한 컨테이너이며 Canvas는 이 Panel을 상속하고 자식 노드의 좌표를 관리하는 DependencyProperty를 제공합니다.

아래는 Silverlight의 렌더링 과정을 추측해 본 건데요, 추측이라기 보담 WPF의 렌더링 모델에서 실버라잇이 지원하지 않는 것을 뺀 것 뿐이에요.


그런데 꿍님의 의견에 의하면 실제로 렌더링 과정에서 Clip이 가장 먼저 일어나는 것 같다고 하네요. 뭐 상식적으로 생각해도 당연한 것일 것 같아요. 여튼 어느쪽이든 지금으로선 정확히 문서화 되지 않았으니 너무 깊이 생각할 필요는 없을 것 같네요.

렌더링에서 중요한 점은 실버라잇의 비주얼 개체들의 속성을 변경했다고 해서 그것이 변경하는 순간 즉시 반영되지 않는다는 점이에요. 이 점역시 WPF의 렌더링 모델을 통한 추측일 뿐이지만요.

실버라잇의 비주얼 개체들의 속성을 변경하는 것은 메모리 상의 속성 값만 바뀐 상태이고 이것을 실제로 렌더링 하는 시점은 실버라잇의 런타임이 관리하는 것으로 생각되요.
이 생각이 맞다면 코드 내에서 속성 값을 수정하는 데 화면의 변경시점을 노심초사할 필요가 없어지겠죠. 단일 코드블럭(한 프로시저)내에서의 속성 수정은 그 도중에 화면 업데이트가 일어나지 않을 거에요.

발표때 미처 얘기 못한 내용이지만, 보통 Win32 환경에서 렌더링이란 것은 윈도 프로시저가 WM_PAINT 메시지를 통해 처리하게 되죠. Win32 개발에서는 이 WM_PAINT메시지를 개발자가 임의의 시점에 발생시킬 수 있기 때문에 UI 컴포넌트에 따라 그려지는 시점 특성이 다를 수가 있어요.

자료가 어제 자기 전에 급조한거라 부실하니 그냥 참고 정도로 보시면 될 것 같아요.
에고 이번에는 미뤄왔던 퀵스타츠나 스토리보드쪽 얘기를 하고 싶었는데 영 시간이 안나요.

신고
Posted by gongdo


티스토리 툴바