2011-09-16 71 views
3

在創建繪圖應用程序或包含數千種形狀的模擬中,建議使用派生自Visual(類似DrawingVisual)的類而不是派生類由於性能下降,從Shape開始。使用形狀派生對象而不是可視派生對象造成的性能下降多少

我想知道性能降低了多少,並且是派生類層次結構中FrameworkElement類的大部分?什麼是閾值超過哪個人應該決定使用Visual而不是Shape?在鏈中丟失UIElement和FrameworkElement有什麼優點和缺點?

回答

5

Drawing派生類的重量都輕得多,因爲它們基本上只是渲染原語。除了定義它們將被繪製的區域之外,它們實際上並沒有太多的工作。

當您使用派生自Shape的類時,所有對象都必須註冊以進行事件處理,並作爲標準佈局系統的一部分工作,並處理所有自己的渲染。這對幾個對象沒有太大的影響,但是隨着您添加更多對象,佈局通過並且事件處理確實會對整體性能產生巨大影響。

我想知道多少是性能下降,並且是派生類層次結構中的FrameworkElement類的大部分?

差不多的這一切 - 它從FrameworkElement派生的事實意味着一個Shape必須處理所有的佈局,事件和渲染,這是整個原因,它是比較慢的。

什麼是閾值超越哪個人應該決定使用視覺而不是形狀?在鏈中丟失UIElement和FrameworkElement有什麼優點和缺點?

衡量,並查看閾值在哪裏......很多取決於你在做什麼,以及你如何使用這些類型。

獲取更多詳細信息的好資源是0123DN頁面的Drawings and Shapes部分。