WPFプログラミングについて

タグの編集
投稿者 名無し  (社会人) 投稿日時 2011/10/1 12:49:43
http://e-words.jp/w/WPF.html
WPFプログラミングについて調べてみましたが、よくわかりません。
ぶっちゃけていうと、VBで作れるグラフィックアプリケーションのグラフィックの部分を
今よりもっと高機能にできるものと考えていいのですか?

例えば簡単なじゃんけんゲームをWPFで作った場合はどのように
なるのでしょうか?
他のサンプルを見た限りではコーディングの量が増えているような気がするのは
私だけ?
投稿者 名無し  (社会人) 投稿日時 2011/10/1 13:17:42
http://codezine.jp/article/detail/910
少し調べてみました。
何となくわかったようなわからないような...です
DirectXを使わなければ作成できなかったアプリもWPFなら作成可能と
解釈してもよいのですか
投稿者 YuO  (社会人) 投稿日時 2011/10/1 16:14:46
ゲーム系ではあまり美味しさがないことも多いかと。

コントロールの自由なデザインと,強力なバインディング機構を通じたUIとロジックの完全分離,
というのが基本的な強みだと思います。
# バインディング機構自体はWinFormsでもありますが。

岩永氏の@ITの連載
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_01/introwpf_01_01.html
なども参考にするとよいかと思います。
投稿者 名無し  (社会人) 投稿日時 2011/10/1 18:28:35
>ゲーム系ではあまり美味しさがないことも多いかと。
美味しさとは?具体的に教えていただけたら有り難いです
すみません

>コントロールの自由なデザインと,強力なバインディング機構を通じたUIとロジックの完全分離,
>というのが基本的な強みだと思います。

すなわち見た目の美しさということなのかな
そして、プログラマとグラフィックデザイナーの共同作業の齟齬の減少に貢献するということなのでしょうか
ちがってたらすみません?

>岩永氏の@ITの連載
>http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_01/introwpf_01_01.html
>なども参考にするとよいかと思います。


ありがとう。しっかり読み込みたいと思ってます
投稿者 YuO  (社会人) 投稿日時 2011/10/2 06:32:36
> >ゲーム系ではあまり美味しさがないことも多いかと。
>  美味しさとは?具体的に教えていただけたら有り難いです

ゲーム系では,コントロールを使わずに直接描画することが多いと思います。
WPFの強みは,XAMLを使ってコントロールを描画すること無しには発揮できないため,「美味しさがない」と表現しました。
# TemplateやStyle,Bindingなどはすべてコントロールの存在が前提になってくるため。


>  >コントロールの自由なデザインと,強力なバインディング機構を通じたUIとロジックの完全分離,
>  >というのが基本的な強みだと思います。
>  すなわち見た目の美しさということなのかな
>  そして、プログラマとグラフィックデザイナーの共同作業の齟齬の減少に貢献するということなのでしょうか

基本的なコンセプトは,デザイナとプログラマが作業を分離できることです。
実際にはなかなかそうもいかないわけですが……。

自由なデザイン,というのは見た目の美しさのみを表すわけではないです。
一例として,WPFとWinFormsでTwitterのSearch APIを呼び出して結果を表示するプログラムを作ってみました。
http://pub.idisk-just.com/fview/e01LkoEMFB1iHnl-ETN-9tYq2mjdsDzQRQiY3MDs1BzYMbXh151CPauuiIa4QVvVMcFkTHMbRlMjB2E7iNwWflxL0vz415DC.zip
# メモリリーク系のバグが大量に残っている可能性が高いです。

WPFでは表示にDataTemplateを使ってExpression Blendのみで見た目の情報を設定しています。
また,XAMLのみに見た目の情報は集約しています。
# 正確には,日付やユーザー名のあたりでVMに書式を任せているため,完全にXAMLのみではないですが。

それに対して,WinFormsではListBoxにコントロールを設定するような機能がないため,
OwnerDrawを使って強引にListBoxの子コントロールとしてユーザーコントロールを設定して表示させています。

これだけの表示であっても,WPFは通常の機能の範囲内で設定が出来るのに対し,
WinFormsでは強引な記述が必要になります。
# スタックパネルにコントロールを積み上げて,スクロールさせる,という方法も考えましたが……。