読者です 読者をやめる 読者になる 読者になる

一目で分からない WPF

.NET Vista

突然ですが質問です.
以下のアプリケーションは,実は WPF で描画されています.画面からお分かりになりますか?

お約束の拡大鏡画面.


文字や三角形といったベクタデータの部分のみ,ベクタ的に拡大されているのがお分かりいただけるでしょうか*1
さらに露骨に Process Explorer.

驚くべきことに,このプロセス内で,JRECLR と d3d9.dll が一緒に動いています.
最後に WPF/MIL のプロファイラである Perforator のスクリーンショット

すばらしき 60 FPS
(追記)常に 60 FPS でぐりぐり動くと誤解されるといけないので追記ですが,メニューを表示したりリサイズを行ったりすると,がくっと FPS が落ちます.あくまでこれは定常状態で 60 FPS の図です.また,ビジュアルツリーに変化がなければ WPF (MIL) は基本的に再描画を行わないので,その「何事もなかったフレーム」がカウントされた上での 60 FPS だと思われます.というわけで,目標はこのフレームレートを常に維持することと,フレームレートに現れないレスポンスタイムの向上というところですね.

WPF への対応が進む SWT

さて,上のアプリケーション,画面中に名前も出ていますが,有名な Eclipse です.そして Eclipse が使用している GUI ツールキットが SWT で,現在この SWTWPF 環境にポーティングするという作業が進んでいます.これこそが,WPF で描画される Eclipse が存在する理由です.

Windows Vistaをサポート

Eclipse 3.3ではWindows Vistaが正式にサポートされている。SWTには新たにWPF版が登場し、Eclipse.orgのダウンロードページではWindows向けのバイナリとして通常版とWPF版の2種類が提供されている。ただし、いまのところWPF版は早期アクセス版という位置付けとなっている。

なお,上のスクリーンショットでは,eclipse project downloads から,3.3 系の最新 Maintenance Build ということで,以下のビルドを選んで使用しています.

普通に起動すれば,WPF で描画されていますので,パフォーマンスが気になる方はひとつ試してみてはいかがでしょうか?
まだまだ開発中とはいえ,ある程度の感触はつかめるかと思います.

ビジネスアプリとしての WPF

WPF の紹介というとどうも 3D が強調されがちで,それがまたビジネスアプリ開発者向けイベントでもやたらと 3D が強調されてきたため,WPF = 3D という図式が一部にできあがっているのではないでしょうか?
しかしそろそろ,GDI/GDI+, MFC/WTL とのパフォーマンス面での正面勝負が始まってもいいように思います.
さて,結局 TechEd 2007 Yokohama 申し込んじゃったのですが,『T3-404 Windows Presentation Foundation アプリケーションの最適化』ではビジネスアプリ向けの話も期待してますよ,と 川西さん に期待のまなざし.というかいっそのことあの場で WPF 上の Eclipse をそのまま見せちゃった方がインパクトあっておもしろいんじゃないでしょうかね?

*1:WPF アプリケーションを Vista で導入された DWM の環境下で実行すると,DWM と WPF が連携して画面描画が行われるようになります.これに伴い,拡大鏡も「あたかも WPF レベルで拡大された」かのような画像が,WPF のクライアント領域については表示されます.詳しくは id:NyaRuRu:20061226 参照のこと.