More Related Content Similar to Windowsフォームで大丈夫か?一番良いのを頼む。 Similar to Windowsフォームで大丈夫か?一番良いのを頼む。 (20) More from Yuya Yamaki (17) Windowsフォームで大丈夫か?一番良いのを頼む。5. グレープシティ
製品利用者の割合
WPF Silverlight
2% 2%
ASP.NET Web
フォーム
23%
Windows
フォーム
73%
Developers Summit 2011
8. デメリットとメリット
移行する 移行したことで
コスト 得られるメリット
移行する 移行しないこと
リスク によるリスク
Developers Summit 2011
9. デメリット < メリット
移行する
コスト
移行する
リスク
移行したことで
得られるメリット
移行しないこと
によるリスク
Developers Summit 2011
11. 一般的な比較表
Visual Basic 6.0 Windowsフォーム WPF
サポート - ✓ ✓
64ビット - ✓ ✓
Visual Style - ✓ ✓
開発環境 Visual Basic 6.0 Visual Studio 2010 Visual Studio 2010
マネージコード - ✓ ✓
描画技術 GDI GDI/GDI+ Direct3D
ベクター描画 - - ✓
2D、3D、
- - ✓
メディアの統合
UI記述 Visual Basic Visual Basic、C#… XAML
Developers Summit 2011
15. GPU性能の進化
GPUはムーアの法則を超えるスピードで進化
GPU名 スコアA スコアB 発売時期
Radeon 9800 (AGP) 27 998 2003年Q2
Radeon X1800 XT 100 5700 2005年11月
Radeon HD 2900 XT 240 11137 2007年5月
Radeon HD 4870 434 15943 2008年6月
ATI Radeon HD 5970 824 18533 2010年5月
GeForce 6800 47 2008 2004年Q4
GeForce 7900 GTX 150 6953 2006年3月
GeForce 8800 GT 262 12676 2007年11月
GeForce GTX 280 470 16257 2008年6月
GeForce GTX 580 965 18376 2010年11月
スコアA:http://www.leoplanet.co.jp/3d_videochip.htm
スコアB:http://mizushima.ne.jp/topic /GPU-benchmark/index.php
Developers Summit 2011
17. 即時モード vs 保持モード
Windowsフォーム(GDI、GDI+)
即時モード
WPF
保持モード
Developers Summit 2011
18. 即時モード
命令型描画
アプリケーション
アプリケーション自身が
GDI/GDI+
直接描画
DrawLine
描画命令の実行と実画面の
DrawText
フレームバッファへの描画
DrawImage
が同期
ディスプレイの更新に同期
実画面のフレームバッファ させる手段は基本的にない
Developers Summit 2011
19. 保持モード
WPF データ駆動型描画
アプリケーション
UIスレッドでは描画データ
ビジュアル
オブジェクト を生成して格納(シリアル化)
描画スレッドでビジュアル
オブジェクトをスキャンし、
Direct3Dのバッファに描画
Media Integration Layer (UIスレッドと非同期)
(wpfgfx_v****.dll)
DirectXランタイムにより
ディスプレイの更新に同期
Direct3Dのサーフェス
Developers Summit 2011
23. UIの仮想化
強力かつ柔軟なレイアウトシステムの特性
パネルに子要素が追加されるたびに、再帰的に
子要素の大きさと位置の測定が行われる
リスト項目を大量に表示するコントロールでは、
パフォーマンス負荷となる
画面に表示されている部分のオブジェクト
のみを生成するのがUIの仮想化
レイアウトプロセスの負荷低減
メモリ使用量の削減
Developers Summit 2011
26. フレックスグリッド
FlexGrid for WPF 1.0J FlexGrid for Silverlight 1.0J
2011年夏 発売予定 2011年3月14日 発売予定
http://www.grapecity.com/japan/FlexgridSilverlight/demo/
Developers Summit 2011
27. WPFのパフォーマンス特性
ベンチマークのような
絶対的なスピードはあまり意味がない
WPFのパフォーマンス特性を生かせるのは
“Fluid UI”「なめらかなユーザーインターフェイス」
実際に簡単なプロトタイプ
を作って確認しよう
Developers Summit 2011
28. 20年前に登場した技術「GDI」
グラフィックドライバモデルの大幅な変更
GDI/ レガシー Direct Direct3 Direct
GDI+ DirectX 3D 9 D 9 Ex 3D 10
レガシー
GDI/GDI+ Direct3D 9 DirectX ランタイム
DirectX
Windows Vista Display Driver Model(WDDM)
GDI32 DirectX ランタイム
カーネル/API (ユーザー) カーネル/API
ユーザーモード/カーネルモード境界 ユーザーモード/カーネルモード境界
XP Display Driver XP Display Driver Model ドライバ Windows Vista Display Driver Model(WDDM) ドライバ
Model(GDI) (DirectDraw/Direct3D) (カーネル)
XPDM(Windows XP) WDDM(Windows Vista以降)
GDIハードウェアアクセラレーションの廃止
Windows 7で部分的に復活(ビットマップ転送系)
Developers Summit 2011
29. 描画はDWMが管理
Windows Vista(WDDM 1.0)の場合
GDIアプリケーション DWM Direct3Dサーフェイス
フレームバッファ(システムメモリ) (ビデオメモリ)
描画イメージ
CPU描画 (ARGB形式) コピー 描画イメージ
プロセス間共有 (ARGB形式)
合成して更新
GDIアプリケーション
フレームバッファ(システムメモリ) 描画イメージ
描画イメージ (ARGB形式)
CPU描画 (ARGB形式) コピー
プロセス間共有
プロセス間共有
Direct3Dアプリケーション(WPF含む) サーフェイス
Present
バック サーフェス反転 描画イメージ
バッファ でリダイレクト
隠しサーフェイス
(ビデオメモリ)
Developers Summit 2011
31. 画面解像度の多様化
2011年1月のグレープシティWebサイト
1600x900 訪問者における画面解像度の内訳
1400x1050
1600x1200 その他
1920x1200
1366x768
1280x1024
1440x900
1920x1080
1024x768
1680x1050 1280x800
Developers Summit 2011
33. 画面解像度比較
1024×768
1280×1024
1920×1080
Developers Summit 2011
34. WPFのレイアウト機能
相対配置
Grid、StackPanel、WrapPanel、DockPanel
領域の有効活用
GridSplitter、Expander、Visibility.Collapsed
ベクタ描画を活かした拡縮
ViewBox
Developers Summit 2011
36. WPFのレイアウトのしくみ
測定パス Measureメソッド
利用可能サイズを通知
子要素の各サイズ系プロパティが評価
され、希望サイズが決定
パ DesiredSizeプロパティ 子
ネ 要
ル 希望サイズを取得 素
配置パス DesiredSizeプロパティ
子要素を配置し、サイズを決定
Developers Summit 2011
38. カスタマイズ性 vs コントロール数
Windowsフォーム
外観のカスタマイズ性が低い
細分化されたコントロールによる高い生産性
WPF
外観のカスタマイズ性が高い
標準で用意されているコントロールが少ない
業務アプリでは機能のカスタマイズが重要
Developers Summit 2011
39. 業務アプリで使われる
エディット系コントロール
Windowsフォーム WPF
テキスト TextBox TextBox
日付 DateTimePicker DatePicker
数値 NumericUpDown -
マスク MaskedTextBox -
数値やマスクといったコントロールが
用意されていない
用意されているコントロールも機能不足
Developers Summit 2011
40. 比較:日付入力コントロール
数字のみの入力 ✔ -
ドロップダウンカレンダー ✔ ✔
スピンボタンによる日付入力 ✔ -
時刻入力 ✔ -
Null値サポート - ✔
ドロップダウンボタンの外観
Developers Summit 2011
41. 業務アプリで使われる
エディット系コントロール
Windowsフォーム WPF InputMan for WPF
テキスト TextBox TextBox GcTextBox
日付 DateTimePicker DatePicker GcDateTime
数値 NumericUpDown - GcNumber
マスク MaskedTextBox - GcMask
InputManは
日本仕様の業務系入力コントロール集
17年かけて培ってきた
ノウハウを結集
17年前のInputMan
Developers Summit 2011
42. 比較:日付入力コントロール
数字のみの入力 ✔ - ✔
ドロップダウンカレンダー ✔ ✔ ✔
スピンボタンによる日付入力 ✔ - ✔
時刻入力 ✔ - ✔
Null値サポート - ✔ ✔
ドロップダウンボタンの外観
和暦、入力時/表示時の書式
設定、入力候補、フィールド - - ✔
単位のフォーカス制御、…
Developers Summit 2011
44. インプットマン
InputMan for WPF 1.0J InputMan for Silverlight 1.0J
2011年4月11日発売予定 発売中
http://tools.grapecity.com/demo/inputmansl/
Developers Summit 2011
46. 将来性(噂レベルの話)
タブレット
2012年
App Store
"Jupiter"
ARM
Visual Studio 2012
“Windows next"
.appx XAML technology
Developers Summit 2011
47. まとめ
Windowsフォーム WPF
“Fluid UI” - ✓
絶対配置が基本
相対配置が基本
UIレイアウト (追加コントロール
(絶対配置も可)
による相対配置)
業務コントロール ✓ ✓(グレープシティ)
将来性 - ✓
ブラウザアプリケーション - ✓
-
アーキテクチャパターン (イベント駆動型 MVVM
プログラミング )
Developers Summit 2011