2012-03-01 14 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

関連する問題