Home > C# > 目的別資料 > Visualレイヤー・プログラミング

Visualレイヤー・プログラミング

新規作成日 2020-10-08
最終更新日

WPFでグラフィクを描画する場合、Geometryオブジェクト、Pathオブジェクト、Visualオブジェクトの3つのオブジェクトが使用できます。

プログラム実行中に変化しない、あるいは、切り替える形で使用する、静的なUIで使用する場合は、 Geometryオブジェクト、Pathオブジェクトで問題ありませんが、プログラム実行中に形状を変化させる場合やデータに応じて形状を描く場合は、表示速度が問題になる場合があります。

プログラム実行中に、形状を作成する場合、WPFで、一番軽量な下位レベルのオブジェクトであるVisualオブジェクトを使用して実装する方法が適切です。

用語の定義の推測

WPFにおけるVisualレイヤー・プログラミングについての資料は、かなり少なく、とても理解しにくいという現実があります。

理解を難しくしている原因の1つは、近接する分野で定義されていている用語を異なる意味で使用しているところにあります。

現在、推測しているVisualレイヤー・プログラミングに関する用語定義の仮定を以下に示します。

  • Visual

    Visualは、表示や外観といった意味でも使われているので、文脈から使われている意味を類推する必要があります。

    Visualレイヤー・プログラミングでは、Visualクラスで、提供される何かのことを示していることが多いです。

  • Visualレイヤー

    MVVMデザインパターンなど、プログラミングのデザインパターンでは、実際に画面に表示する処理を行うコードやメソッドを示す漠然とした概念として、Visualレイヤーという用語が使われています。

    一方、WPFでは、Visualレイヤーは、Visualクラスから派生したクラスで作成されたVisualオブジェクトを格納するデータコンテナや、Visualオブジェクトを格納する場所のことを示しています。

  • Visualツリー

    Visualレイヤーの中に格納されたVisualオブジェクトは、ツリー構造で格納されています。このことから、Visualレイヤーの中にツリー構造で格納されたVisualオブジェクトのことを示します。

  • Logicalオブジェクト

    .NET Framework 2.0以前のUIオブジェクトのことです。.NET Framework 3.0以降に登場したLogicalオブジェクトを拡張したUIをVisualオブジェクトと呼びます。

  • Logicalツリー

    プログラミングのデザインパターンの知識があれば、データの加工や変換を行う、プログラミングのデザインパターンでのビジネス・レイヤーのことではないかと類推するのではないかと思います。

    WPFのVisualレイヤー・プログラミングでは、意味が異なります。WPFでは、.NET Framework 2.0以前のUIオブジェクトをLogicalオブジェクトと呼びます。そして、このことから、Logicalツリーは、Logicalオブクトがツリー構造で格納されていることやツリー構造で格納されているLogicalオブジェクトを示します。

  • オブジェクト

    クラスで生成したデータ。生成したクラスや継承するクラスやインターフェイスが持つメソッドやプロパティ、データメンバが利用できるという特徴を持っています。

  • ヒットテスト

    テスト駆動開発おけるヒットテストは、出来上がったプログラムのUIがマウスのクリックやドラッグで意図した動作をするかどうかを確認する作業のことを示します。

    一方、WPFでは、マウスやキーボードイベントを検出する部分のコードを実装する(継承するクラスのメソッドをオーバライドする)ことを示します。具体的には、カスタム要素、カスタム・パネル、カスタム・コントロールに、マウスやキーボードに関連するイベントを実装する作業やマウスやキーボードに関連するイベントのことを示します。

WPFでの「Visualレイヤー・プログラミング」の位置づけ

C#は、フルスペックの開発言語であるため、ほとんどの作業をC#で行う事ができます。

ハードウェアに近いグラフィックを描く処理は、伝統的にC++やCで記述されてきたため、サンプルコードを含めた技術の蓄積に大きな差があります。結果として、既に、C++やCで処理する方法を知っていれば、同じ処理を、あらたに、C# WPFで処理する方法を検討することは、非効率なため、まず、ありません。

具体的には、C++やCで、処理するコードを、dllとして作成し、C#から利用する方法を選択します。

また、C#でグラフィック使用する方法に、ゲーム開発向けに提供されているUnityと呼ばれる環境があるため、ゲーム向けには、WPFは利用されないことも利用するための情報が少ない1つの要因になっているものと思われます。


C++やCで、ハードウェアに近いグラフィックを描く処理に関する経験がなく、グラフィック・ツールやグラフツールなど、ビジネス系のアプリケーションで図形を作成したい場合など、WPF環境でグラフィックを利用したい場合には、C#で、「Visualレイヤー・プログラミング」により、軽快なグラフィックを実現するのは、有効な選択肢です。

msdnに存在する「Visualレイヤー・プログラミング」のドキュメントの日本語訳

現時点(2020-10-08現在)では、msdnに存在する「Visualレイヤー・プログラミング」のドキュメントが、最も情報が豊富だと思われます。

msdnに存在する「Visualレイヤー・プログラミング」のドキュメントの内容を確認してから、書籍や他のインターネット上の情報やソースコードを参考にして、理解を深めていく経路が最も効率的な学習経路だと思います。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」