2011-09-16 3 views
3

수천 개의 모양을 포함하는 드로잉 응용 프로그램 또는 시뮬레이션을 만들 때 파생 된 클래스 대신 Visual에서 파생 된 클래스 (예 : DrawingVisual)를 사용하는 것이 좋습니다 성능 저하로 인해 Shape에서시각적 파생 객체 대신 Shapes 파생 객체를 사용하여 발생하는 성능 저하 정도

파생 클래스의 계층 구조에서 FrameworkElement 클래스로 인해 성능 저하가 얼마나되는지 알고 싶습니다. Shape 대신 Visual을 사용하여 결정해야하는 한계점은 무엇입니까? 체인에서 UIElement와 FrameworkElement를 잃어 버리는 장단점은 무엇입니까?

답변

5

파생 클래스는 기본적으로 그냥 기본 요소를 렌더링하기 때문에 훨씬 가벼운 가중치입니다. 그들은 실제로 그려 질 지역을 정의하는 것 외에는 많은 것을하지 않습니다.

Shape에서 파생 된 클래스를 사용하면 객체는 모두 이벤트 처리를 위해 등록해야하며 표준 레이아웃 시스템의 일부로 작동하고 모든 자체 렌더링을 처리합니다. 이것은 거의 객체에 거의 영향을 미치지 않지만 더 추가하면 레이아웃이 전달되고 이벤트 처리가 전체 성능에 큰 영향을 줄 수 있습니다.

파생 클래스의 계층 구조에서 FrameworkElement 클래스로 인해 성능 저하가 얼마나되는지 알고 싶습니다.

거의 모든 IT의 - 그것은 FrameworkElement에서 유래한다는 사실은 Shape가 느린의 전체 이유 레이아웃, 이벤 팅 및 렌더링을 모두 처리한다는 것을 의미한다.

그리고 Shape 대신 Visual을 사용하여 임계 값을 결정해야하는 한계점은 무엇입니까? 체인에서 UIElement와 FrameworkElement를 잃어 버리는 장단점은 무엇입니까?

임계 값이 당신에게 적합한 지 확인하고 측정하십시오 ... 많은 작업은 수행중인 작업과 이러한 유형을 사용하는 방법에 따라 다릅니다.

자세한 내용은 MSDN의 WPF Performance Optimization 페이지에서 Drawings and Shapes 섹션을 참조하십시오.