2012-03-01 3 views
2

별도의 UIElement의 OnRender 메서드를 재정의하고 DrawingContext를 사용하여 프리미티브를 직접 그려서 WPF 윈도우에서 다소 복잡한 "이미지"(종종 새로 고쳐야하고 많은 드로잉 프리미티브가 필요함)를 그립니다.OnRender의 DrawingContext를 사용하여 드로잉을 장면 뒤에 어떻게 수행합니까?

내 질문에 정확히 무슨 일이 발생합니까? 내가 이해하는 한, 이것은 유지 모드를 사용하지 않는 것입니다 (셰이프를 컨트롤에 배치 한 경우). 나는이 같은 그림이 실제로 GDI +를 그 자체의 문제 (예 : GDI +로 그려진 인쇄물은 이미 우리에게 시간과 노력을 들였음)를 가져 오는 뒤에서 사용할 것이라고 염려합니다.

은?

가르치 려 할 수있을 듯하지 않은 명백한 MSDN 자원 외에 어떤 좋은 자원 (가 있습니까 아니면 내가 완전히 잘못 모든 것을 가지고 있나요? 어떤 답변이 나를 가리키는위한

감사합니다 올바른 방향.

답변

1

당신은 여전히 ​​높은 수준의 객체 (움직이는 물체 등이 아닌)를 사용하지 않고 단순한 포인트, 선 등을 사용합니다.

나는 DrawingContext의 소스를 파헤 쳤다. 내가 알 수있는 것부터, 저 레벨의 마법사를 사용하여 모든 DrawXYZ 명령을 큐에 넣는 것처럼 보인다. (큐 자체는 임의의 크기의 구조체로 이루어져 있으며 각각은 특정 명령을 나타낸다.).

WPF는이 스레드를 this 질문의 렌더링 스레드로 표시된 다른 스레드에서 처리합니다. 이걸 확인하지는 못했지만 WPF가 모든 드로잉에 StreamingContext를 사용하고 있다고 생각합니다.

또한 WPF는 렌더링에 DirectX를 사용하고 있습니다. 이는 this bogpost에서 볼 수 있듯이 WPF가 실제로하는 것을 더 잘 보여줍니다.

이 점이 나에게 도움이되기를 바랍니다.

+0

대단히 감사합니다. 이미이 점을 의심했지만 항상 확신합니다. – Daniel