none
WPFのVisualの概念を示した図 RRS feed

  • 質問

  • https://docs.microsoft.com/ja-jp/dotnet/framework/wpf/advanced/media/wpf-architecture2.png

    こちらの図なんですが、

    https://docs.microsoft.com/ja-jp/dotnet/framework/wpf/advanced/wpf-architecture

    からの引用です。このページでは図の右側のことしか説明していませんし、図に文字が入っていないのでイマイチ何のことかわかりません。

    WPFが最初に発表された頃に、文字が入っている図を見た記憶があり、また、図の左側についても説明があったように思います。もし、元の詳しい説明の在り処をご存知の方おられれば、ご教示願えませんか?


    2018年10月22日 7:12

回答

  • 元ページに文字が入ってたかどうかは見つけられなかったけど、適当に推測して文字を入れるとこんな感じになると思う。

    Visualの右下の四角にはTransform,Animation,Effect,Visibilityといったものが入るのかな。

    左のVisutalTreeが右のCompositionNodeのツリーに翻訳されて、CompositionNode毎に独立した状態が保持されていて、それを合成してるということかと。
    ここからさらにCompositionNodeに対応するDirectX命令を通ってGPUまで下りていくと描画結果に。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 外池 2018年10月23日 1:10
    2018年10月22日 10:28

すべての返信

  • 元ページに文字が入ってたかどうかは見つけられなかったけど、適当に推測して文字を入れるとこんな感じになると思う。

    Visualの右下の四角にはTransform,Animation,Effect,Visibilityといったものが入るのかな。

    左のVisutalTreeが右のCompositionNodeのツリーに翻訳されて、CompositionNode毎に独立した状態が保持されていて、それを合成してるということかと。
    ここからさらにCompositionNodeに対応するDirectX命令を通ってGPUまで下りていくと描画結果に。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 外池 2018年10月23日 1:10
    2018年10月22日 10:28
  • gekkaさん、非常にわかりやすいご説明、感謝します。Microsoft殿には、是非、本件をドキュメントに反映して頂きたいところ。

    小生、数の点で複雑な2Dグラフィクスの描画方法を検討しているところで、どういう単位でShapeにまとめるべきか? Image(DrawingImage)にまとめるべきか? などと考えていました。DrawingVisualにまとめてFlameworkElementを継承した自作クラス(MS殿提供のサンプルにもある)で描画する方法もあるな、とも最近知ったところ。UIElementのOnRenderメソッドでDrawingContextに直接描画する方法はどうか? とも。

    で、そもそも、DirectXの恩恵を受けるためにどんな構造を保っておけば良いのかが判らなかったのです。複数のVisualからなる木構造が、おおまかに、DirectXまで渡されるということが明確になって非常に助かりました。(「おおまかに」というのは、図の左右の木構造が違うところはかなり違ってるし、MS殿ドキュメントでも、各々のVisualからcomposition nodeが1個作られる場合も、全く作られない場合も、複数作られる場合もある、と書かれている。)

    各論はまた別途質問させて頂きます。


    • 編集済み 外池 2018年10月23日 0:40
    2018年10月23日 0:35