「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>WPF]]

* 目次 [#cdc93c3d]
#contents

*概要 [#q32548c3]

*サポートする機能 [#t4e8816f]
**グラフィック [#h896dbc6]

***2D/3Dグラフィック・レンダラー [#r6c4d533]
従来は、
-2D(図形、ブラシ、ペン)はGDI、
-3D (光源、カメラ位置情報)はDirect3D、
-ビデオはDirectShow

>など、異なるAPI群を組み合わせていたが、~
WPFのUIフレームワークでは、これらを統一して扱えるようになっている。

***ベクタ グラフィック [#pe53cfa6]
-従来のラスタ グラフィックから、画素密度非依存のベクタ グラフィックに変更。
-画素密度の変更や、拡大・縮小をしても、画質が維持される。
-WPF グラフィックス レンダリングの概要~
http://msdn.microsoft.com/ja-jp/library/ms748373.aspx

***GPUレンダリング [#g7c26c86]
CPU描画の他の技術より高速で、同時にCPUへの負担を最小限に抑えることができる。
-CPUによりビットマップ イメージのレンダリングを行っていた[[GDI, GDI+>GDI]]から、
-Direct3D経由でGPUを使用するレンダリングに変更されている。

***透過性 [#vc2014b7]
透過性をサポートしている。

**メディア [#ae89eda3]
***ドキュメント [#rd24392b]
-WPFドキュメント(XPSドキュメントやフロー ドキュメント)を表示できる 。
-ドキュメント表示のためのFixedDocument、FlowDocumentコントロールが標準で提供されている。

***イメージ [#o2f8b472]
-JPEGやGIFなど多様な形式のイメージを表示できる 。
-静止画を表示するためのImageコントロールが標準で提供されている。

***ビデオ [#u809e60f]
-WMV、AVI、MPEGなど多様な形式のメディアを表示できる 。
-動画や音声を再生するためのMediaElementコントロールが標準で提供されている。

**コントロール [#he1818af]
***コントロール種類 [#c254ae14]
-Windowsの標準的なUIを実装するために必須である、基本的な組み込みコントロールが提供される。
-なお、HTMLと同様に、これらのコントロール類をXAMLで実装するため、コントロール単位にXAMLタグが用意されている。

***データ バインディング [#gb2a904a]
UIコントロールと、CLRオブジェクトの間をマッピングする。

**スタイル・テンプレート [#g36ee328]
UIコントロールの「外観」や、イベント ハンドラ・イベント トリガなども含めた、UIコントロールの標準化・カスタマイズを行う。

**レイアウト [#t2c0cd22]
パネルと呼ばれるレイアウト用コントロールを使用して、Windowsフォームのような座標レイアウト、HTMLのようなフロー レイアウト(ブロック化、格子分割)にも対応する。

**アニメーション [#r34f5a3d]
イベント トリガ、トリガ アクション、ストーリ ボードを定義することで、UIコントロールなどの表示項目にタイムライン ベースのアニメーションの効果を付加できる。

**デプロイ [#s2a81ed7]
ClickOnce、[[XBAP]]などのデプロイが可能。

**相互運用性 [#x4bb8f7f]
-P/InvokeやRCW呼出しなどWin32連携技術を使用した相互運用が可能である。
***API [#cfb2e9f9]
P/InvokeやRCW呼出しなどWin32連携技術を使用した相互運用が可能である。

-また、WindowsFormsHost、Hwndhost を使用することで、~
***コントロール [#u1da4487]
また、WindowsFormsHost、Hwndhost を使用することで、~
WindowsフォームやActiveXのUIコントロールを使用することも可能である(パフォーマンス的には不利)。~
例えば、下記は、System.Windows.Forms名前空間のDataGridコントロールをホストするWPFの例である。~
 <Window x:Class="WpfApplication1.Window1"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"  
   Title="HostingWfInWpf" Height="150" Width="300" Loaded="Window_Loaded">
   <Canvas>
     <WindowsFormsHost Name="windowsFormsHost1" Height="100" Width="275">
       <wf:DataGrid x:Name="dataGrid1"/>
     </WindowsFormsHost>
   </Canvas>
 </Window>

***参考 [#z1c843b8]
-MSDN > Windows Presentation Foundation > 移行と相互運用性
--Windows フォームと WPF の相互運用性入力アーキテクチャ~
http://msdn.microsoft.com/ja-jp/library/ms742474.aspx
--WindowsFormsHost要素のレイアウトに関する考慮事項~
http://msdn.microsoft.com/ja-jp/library/ms744952.aspx
--チュートリアル:WPFでのWindowsフォーム複合コントロールのホスト~
http://msdn.microsoft.com/ja-jp/library/ms750944.aspx
--チュートリアル:WPFでの、XAMLを使用したWindowsフォーム コントロールのホスト~
http://msdn.microsoft.com/ja-jp/library/ms742875.aspx
--チュートリアル:WPFでのActiveXコントロールのホスト~
http://msdn.microsoft.com/ja-jp/library/ms742735.aspx

-@IT > Insider.NET > .NET TIPS
--WPF/XAMLでWindowsフォームを利用するには?[3.0,3.5,VS2008,C#、VB]~
http://www.atmarkit.co.jp/fdotnet/dotnettips/802winformonwpf/winformonwpf.html
--WindowsFormでWPFコントロールを利用するには?[3.0,3.5,VS2008,C#、VB]~
http://www.atmarkit.co.jp/fdotnet/dotnettips/800wpfonwinform/wpfonwinform.html

*機能の制限事項 [#u458510e]
主に3Dグラフィックの高度な機能に関する制限であるので、リッチでインタラクティブな業務アプリケーションの開発に、大きな支障は無いと言える。

|項番|区分|説明|h
|1|パフォーマンス|Direct3Dと比べるとオーバーヘッドがあり、GPU負荷が高くなる。また、WPFはDirect3D 9対応であり、Direct3D 10対応のグラフィックボードであってもパフォーマンスは向上しない。|
|2|シェーダ|WPFは内部的にシェーダを使用しているが、開発者がWPFからシェーダを使用することはできない。|
|3|スキニング |WPFではスキニングができないので、滑らかな関節を持つアニメーションはできない(剛体アニメーションのみサポート)。|
|4|環境マッピング|WPFでは環境マッピングが使用できないので、物体に周囲の景色が反射しているような効果は表現できない。|
|5|影|WPFではステンシル バッファ(3Dグラフィックにおいて、物体の重ね合わせなど、描画しなくても良い領域を効率よく判定するためのバッファ領域)や、深度バッファを使用できないためリアルな影を生成できない。|
|6|テクスチャ・フィルタリング|ポリゴンのテクスチャを構成するピクセルにテクセル(3Dグラフィックにおいて、テクスチャを構成する一つ一つのピクセル)が一対一に対応することはほとんどなく、&br;ポリゴンにテクスチャをマッピングする際には、テクスチャを拡大/縮小(変形)するフィルタが必要となるが、WPFから、このフィルタを指定することはできない。|

**シェーダ [#a950b4f0]
-3Dグラフィックにおいて、グラフィック リソースに対して光源計算、陰影処理とレンダリング(ピクセル化)を実行するために使用するソフトウェア命令の組み合わせ。
-シェーダには、3Dグラフィックを、2Dグラフィックのように表示するトゥーン シェーダや、毛筆で描かれたような水彩画風の特殊な絵のタッチで表示する筆シェーダなどがある。

**スキニング [#ed4a07a2]
3Dグラフィックにおいて、人間の関節のような滑らかな屈曲を表現するための手法。

**環境マッピング [#s6a808fc]
-3Dグラフィックにおいて、レイトレーシングを使わずに反射率の高い表面をシミュレートするテクニック。
-オブジェクトを囲むシーンの画像を含む特殊なテクスチャを、オブジェクト自体に適用する。
-結果、反射面の特徴を上手く模倣し、膨大な計算を必要とするレイトレーシングを使わずに、十分実用的なものになる。

*注意事項 [#h510ff35]
**標準UIコンポーネント [#q96953fc]
初期は不足があり、サードパーティ製品に依存していたが、最近は拡充された。

**帳票ビューア [#d5c323d7]
初期はサードパーティ製品に不足があったが、最近は拡充された。

**座標レイアウト [#a944f035]
Windowsフォームの開発と同様に、VSデザイナからコントロールをD&Dして座標レイアウトでコントロール位置を指定する方式の開発を望む場合は、パネル要素に、Canvasコントロール(後述)を使用する。

----
Tags: [[:.NET開発]], [[:UIサブシステム]], [[:WPF/Silverlight, XAML]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS