WPFとは、Microsoftが開発した、グラフィカルユーザーインターフェース(GUI)を開発するためのグラフィックスサブシステムの名称である。開発コード名は「Avalon」だった。
WPFでは、「XAML」(Extensible Application Markup Language)と呼ばれるXMLベースの描画用マークアップ言語に対応している。従来のビットマップグラフィックスの他にベクタグラフィックスを扱うことが可能であり、3次元グラフィックスや動画なども容易に扱えるようになった。これらのユーザーインターフェースは、テキストやドキュメントも含めて、統一的なAPIを用いて開発することができる。
また、WPFはパソコンに搭載されたGPU(Graphics Processing Unit)を最大限に活用する機能をもっている。これによりCPUの処理を他の作業に割り当てることができ、グラフィックの品質を向上させながら全体的なパフォーマンスを保つことができるとされる。
WPFはMicrosoft Silverlight(開発コード名「WPF/E」)と呼ばれるサブセットを持っている。Microsoft SilverlightはXAMLやJavaScriptによって様々なプラットフォームでアプリケーション描画を再現することができる。
WPFは.NET Framework 3.0(WinFX)の根幹となる技術のひとつで、.NET Framework 3.0とともにWindows Vistaにおいて初めて採用された。ただし.NET Framework 2.0をサポートしているWindows XPやWindows Server 2003上でもWPFを動作させることができる。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/02/16 13:52 UTC 版)
Windows Presentation Foundation (WPF) はマイクロソフトが開発した、.NET Framework 3.0以降に含まれるユーザインタフェースサブシステムである。開発時のコードネームはAvalonであった[1][2]。
WPFは、ユーザインタフェースとロジックを明確に区別する一貫したプログラミングモデルを提供する。 WPFアプリケーションはデスクトップで実行するだけでなくウェブブラウザ上で配置・実行することもできる(ただし類似技術のSilverlightとは違い、Windowsのみがターゲット環境となる)。 WPFによって、ユーザインタフェース、2Dおよび3Dオブジェクトの描画、ベクトルグラフィックス、ラスターグラフィックス、アニメーション、音声および動画の再生などといった表現手法を統一的に利用することができる。WPF以前のWindowsアプリケーション開発では、それらを実現するためにはGDI/GDI+、DirectX Graphics (Direct3D他)、DirectX Audio (DirectSound他)[3][4]、WindowsマルチメディアAPI、DirectShowといった個別のWindows APIを使って実装しなければならなかった。
.NET Framework 3.0はWindows Vistaにプリインストールされており、Windows XP SP2およびWindows Server 2003でも利用できる。また、Windows 7には.NET Framework 3.5 SP1がプリインストールされている。WPFのバージョン番号は、それが含まれる.NET Frameworkのバージョンと同列に扱われることが多い。例えば.NET 3.0上で動作するものはWPF 3.0、.NET 3.5/3.5 SP1で機能拡張されたものはWPF 3.5、そして.NET 4で機能拡張されたものはWPF 4といった具合である。 なお、Windows 8には.NET 4.5が、Windows 8.1には.NET 4.5.1が、Windows 10には.NET 4.6が、そしてWindows 11には.NET 4.8がプリインストールされており、WPF 4.5以降を標準的に利用できるが、逆に.NET 3.5以前のコンポーネントは標準で有効になっていないため、WPF 3.0/3.5アプリケーションを動作させるためには明示的なインストールが必要である[5]。
次に示すのはWPFの特徴の一部である。
全てのグラフィックスはDirect3Dを介して描画される。 また、可能であればGPUによるハードウェアアクセラレーションが使用される。 これにより、高速かつ高度なグラフィックを統一されたインタフェースで実現・利用することができる。
Viewport3DのようなWPFフレームワーク自体に組み込まれた機能のほか、D3DImageのようなDirect3D相互運用性も備えている。WPFではグラフィックスハードウェア(グラフィックスカード/グラフィックスチップ)のDirectX (Direct3D) 対応レベルに応じて、GPUアクセラレーションの有無が決定される。
WPF 3.5までは下記のようになっている[9]。
一方、WPF 4以降は下記のように変更されている[10]。
WPFは標準でXPSフォーマット (XPS API) をサポートし、画面に表示されているUIElementツリーをそのまま印刷に使用することができる (WYSIWYG)。なお、WPF同様に、画面描画をGPUアクセラレートする技術にDirect2Dが存在するが、Direct2D 1.0は印刷デバイスへの出力を直接サポートしないので、こちらはGDI/GDI+などを併用する必要がある。Direct2D 1.1ではメタデータ出力による印刷機能が追加されている。
WPFは通常のスタンドアローンアプリケーションだけでなく、XAMLブラウザアプリケーション (XBAP) として配置することもできる。
HwndHostクラスの合成、アセンブリのCOM公開など)ことも、WPFからWin32のコードを利用する(例:HwndHostクラスの継承、D3DImageクラスなど)ことも可能である。ElementHost、WindowsFormsHostクラス)。なお、WPFのUI上に配置されたWin32あるいはWindows FormsによるレガシーなUIコントロールの描画に対しては、GPUアクセラレーションが効かない(GDI/GDI+によって描画される)ので注意が必要である。
WPFは次に示す3種類のデータバインディングをサポートする。
WPFのUIはXAMLと呼ばれるXMLベースのマークアップ言語で記述され、対応するイベントハンドラなどをC#あるいはVB.NETなどの.NET系言語で記述することになる(コードビハインド)。これはWPFの強力な利点のひとつであり、ロジックとインターフェイスを完全に切り離すことができる。
なお、XAMLを使わずにC#、VB.NET、C++/CLIなどの.NET言語を使い、UIをコードベースで組み立てていくことも可能ではあるが、IDE搭載のXAMLエディターおよびXAMLデザイナーを利用してXAMLベースでUIを記述するほうが直感かつ効率的に階層構造を構築できる。
WPFはマウスおよびキーボード入力をサポートするほか、System.Windows.Controls.InkCanvasにより、スタイラスペンを使用した入力にも対応する[13]。WPF 4以降は、Windows Formsでは標準対応されていないWindowsタッチAPI(マルチタッチ)に対するラッパーを提供する[14]。
XAMLファミリーとして、いくつかのWPF類似技術がマイクロソフトによって開発されている。
SilverlightはマイクロソフトによってAdobe Flashの競合技術として開発された。Silverlightは主にブラウザ上での実行を想定しているのに対し、WPFはよりクライアントPC環境に密着したスタンドアローン向け技術である。また、Silverlightで使用される.NET Frameworkは基本的に.NET Compact Frameworkのような機能制限付きサブセットであるが、WPFで使用される.NET FrameworkはWindows PC環境向けのフルセットである点も異なる。
Windows 8/Windows RTにおいて導入されたWindowsストアアプリ(WinRTアプリ、Modern UIアプリケーション)はWPF同様XAMLによってユーザインタフェース要素を記述し、WPFに類似したプログラミングモデルを提供する。C#やVB.NETといったマネージ言語だけでなく、ネイティブ言語(C++)からも利用できることが特徴である。Windows 10においてWindowsストアアプリの後継として導入された、ユニバーサルWindowsプラットフォーム (Universal Windows Platform, UWP) アプリケーションも基本は同様である。
固有名詞の分類
| マイクロソフトのAPI |
Windows Presentation Foundation Windows Driver Model ActiveX Data Objects Trident Graphics Device Interface |