3.0以降に含まれるユーザインタフェースサブシステムである。開発時のコードネームはAvalonであった[1][2]。概要[編集]WPFは、ユーザインタフェースとロジックを明確に区別する一貫したプログラミングモデルを提供する。WPFアプリケーションはデスクトップで実行するだけでなくウェブブラウザ上で配置・実行することもできる(ただし類似技術のSilverlightとは違い、Windowsのみがターゲット環境となる)。WPFによって、ユーザインタフェース、2Dおよび3Dオブジェクトの描画、ベクトルグラフィックス、ラスターグラフィックス、アニメーション、音声および動画の再生などといった表現手法を統一的に利用することができる。APIを使って実装しなければならなかった。2003でも利用できる。SP1がプリインストールされている。Frameworkのバージョンと同列に扱われることが多い。4といった具合である。3.0/3.5アプリケーションを動作させるためには明示的なインストールが必要である[5]。特徴[編集]次に示すのはWPFの特徴の一部である。グラフィックス[編集]全てのグラフィックスはDirect3Dを介して描画される。可能であればGPUによるハードウェアアクセラレーションが使用される。これにより、高速かつ高度なグラフィックを統一されたインタフェースで実現・利用することができる。Direct3Dを通して描画することにより、グラフィックスハードウェア上のGPUに描画処理の一部を任せることが可能になる。これは(GDI/GDI+で問題となっていた)CPUの負荷を軽減することにつながる。ベクトルグラフィックスをサポートする。これは損失のない拡大縮小を可能にする。3Dモデルのレンダリングや相互作用をサポートする。Viewport3DのようなWPFフレームワーク自体に組み込まれた機能のほか、D3DImageのようなDirect3D相互運用性も備えている。Update以降の環境で利用可能である[7][8]。対応レベルに応じて、GPUアクセラレーションの有無が決定される。3.5までは下記のようになっている[9]。GPUアクセラレーションなし。一部GPUアクセラレーションあり。ほとんどの機能がGPUアクセラレーションを使う。9.0以上(VRAM搭載量120MB以上、頂点シェーダー2.0以上など)。4以降は下記のように変更されている[10]。GPUアクセラレーションなし。いくつかの機能はGPUアクセラレーションを使う。ほとんどの機能がGPUアクセラレーションを使う。MB以上、頂点シェーダー2.0以上など)。1.0は印刷デバイスへの出力を直接サポートしないので、こちらはGDI/GDI+などを併用する必要がある。1.1ではメタデータ出力による印刷機能が追加されている。して配置することもできる。インストーラによってローカルコンピュータ上に配置されるアプリケーションである。Explorerなどのウェブブラウザによってホストされるアプリケーションである[11]。コンピュータリソースへのアクセスやWPFの機能は一部制限される。相互運用性[編集]WPFはWin32(ネイティブコード)との相互運用機能を提供する。Win32のコード内からWPFを利用する(例:HwndHostクラスの合成、アセンブリのCOM公開など)ことも、WPFからWin32のコードを利用する(例:HwndHostクラスの継承、D3DImageクラスなど)ことも可能である。Formsとの相互運用も可能である(ElementHost、WindowsFormsHostクラス)。FormsによるレガシーなUIコントロールの描画に対しては、GPUアクセラレーションが効かない(GDI/GDI+によって描画される)ので注意が必要である。マルチメディア[編集]WPFはブラシ、ペン、幾何図形、変形などの基本的な2Dグラフィックス機能を提供する。WPFで提供される3D機能はDirect3Dのサブセットである。WPFではよりユーザインタフェースなどの要素に密接に利用することができる。これによって3DのUI、文書、メディアなどが可能になる。一般的なラスター画像フォーマットをサポートする。WMV、MPEG、AVIフォーマットの動画をサポートする。時間ベースのアニメーションをサポートする。これはシステムのパフォーマンスに依存せずアニメーションのスピードを一定に保つ。ClearTypeを利用したテキストレンダリングをサポートする。OpenTypeフォントの機能もサポートする。4以降はDirectWriteコンポーネントとの統合が図られており、縦方向のClearTypeアンチエイリアスが有効となる。データバインディング[編集]WPFは次に示す3種類のデータバインディングをサポートする。クライアントはサーバ上のアップデートを無視する。クライアントはデータに対して書込み禁止の権限をもつ。クライアントは読み込みと書き込み両方の権限をもつ。(UI)[編集]WPFのUIはXAMLと呼ばれるXMLベースのマークアップ言語で記述され、対応するイベントハンドラなどをC#あるいはVB.NETなどの.NET系言語で記述することになる(コードビハインド(英語版))。これはWPFの強力な利点のひとつであり、ロジックとインターフェイスを完全に切り離すことができる。ボタン、メニュー、リストボックスなどといった基本的な組み込みコントロールが提供される。Formsと比べて容易である。XAML拡張構文(Bindingマークアップ拡張[12])を用いたデータバインディングにより、コードビハインドを記述することなくデータソースもしくはユーザインタフェース変更の反映や連動を実現することもできる。XAMLを使わずにC#、VB.NET、C++/CLIなどの.NET言語を使い、UIをコードベースで組み立てていくことも可能ではあるが、IDE搭載のXAMLエディターおよびXAMLデザイナーを利用してXAMLベースでUIを記述するほうが直感かつ効率的に階層構造を構築できる。入力[編集]WPFはマウスおよびキーボード入力をサポートするほか、System.Windows.Controls.InkCanvasにより、スタイラスペンを使用した入力にも対応する[13]。Formsでは標準対応されていないWindowsタッチAPI(マルチタッチ)に対するラッパーを提供する[14]。類似技術[編集]XAMLファミリーとして、いくつかのWPF類似技術がマイクロソフトによって開発されている。Flashの競合技術として開発された。Silverlightは主にブラウザ上での実行を想定しているのに対し、WPFはよりクライアントPC環境に密着したスタンドアローン向け技術である。PC環境向けのフルセットである点も異なる。UIアプリケーション)はWPF同様XAMLによってユーザインタフェース要素を記述し、WPFに類似したプログラミングモデルを提供する。C#やVB.NETといったマネージ言語だけでなく、ネイティブ言語(C++)からも利用できることが特徴である。アプリケーションも基本は同様である。2010ではそれ自体がWPFで実装されるに至っている[15]。2016年5月29日時点のオリジナルよりアーカイブ。2016年4月17日閲覧。2016年4月17日閲覧。2015年3月11日閲覧。2015年3月11日閲覧。2022年12月10日閲覧。2022年12月10日閲覧。2017年3月20日閲覧。2017年3月20日閲覧。2015年8月8日閲覧。2015年8月8日閲覧。2016年4月17日閲覧。2015年3月11日閲覧。2015年3月12日閲覧。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスのもとで利用できます。追加の条件が適用される場合があります。詳細については利用規約を参照してください。Cookieに関する声明モバイルビュ。