2012-03-01 64 views
2

我正在通過重寫單獨的UIElement的OnRender方法並使用DrawingContext直接繪製基元來在WPF窗口中繪製相當複雜的「圖像」(通常需要刷新並具有許多繪製基元)。如何在OnRender中使用DrawingContext進行繪製?

我的問題是,幕後究竟發生了什麼?據我所知,這不是使用保留模式(如果我將Shapes放入控件中就會出現這種情況)。我在問這個問題,因爲我很擔心這樣的繪圖實際上只是在背面使用GDI +,這會帶來自己的問題(例如,使用GDI +繪製的打印內容已經耗費我們時間和精力)。

是否有良好的資源(除了已經不是好像能賜教明顯的MSDN資源?

還是我得到的一切完全錯了?

感謝您的任何答案,指着我正確的方向

回答

1

你仍然使用保留模式,你只是沒有使用高級對象(沒有動畫對象等),而是簡單的點,線等。

我已經挖掘了DrawingContext的來源,並且從我所知道的情況來看,它似乎正在將所有這些DrawXYZ命令使用一些低級別嚮導推送到隊列中(隊列本身由任意大小的結構組成,每個結構都包含一個特定的命令)。

WPF然後在另一個線程上處理這個隊列,表示this問題中的呈現線程。我沒有證實這一點,但我猜WPF使用StreamingContext來繪製它的所有圖形。

此外,WPF正在使用DirectX進行渲染,如this bogpost所示,它可以更好地瞭解WPF實際執行的操作。

我希望這可以爲你澄清事情。

+0

非常感謝您,我已經懷疑這一點,但總是很高興可以肯定。 – Daniel 2013-02-11 07:58:03

相關問題