トップ回答者
WPFアプリのWindows XP上での開発、実行

質問
-
みなさん。こんにちは。いつも参考にさせて頂いています。
WPFについて質問が有ります。
・Windows XP上で、開発、実行するのですが、Windows Vistaで導入された
機能との事なので、何か制約、問題はあるのでしょうか?
.NET Framework 3.0がインストールされていれば良いとの事なのですが、
ご意見をお聞かせ下さい。
・動作速度は、Windows Formと比べてどうでしょうか?
・Windows Formに出来て、WPFに出来ない事をご存じであれば、教えて下さい。
PCで動作する業務システムの開発なので、WPFの特徴である、「視覚的に優れた」機能は不要なのですが、
ブラウザの様に、画面の大きさを変更した時に、テキストボックス、ボタン等の
コントロールが自動で再配置される機能が良いと思い、WPFの使用を考えています。
宜しくご教授お願いします。
回答
-
設計思想の違いなどはさておいて、
> ・Windows Formに出来て、WPFに出来ない事をご存じであれば、教えて下さい。
できないことを幾つかあげてみます。
・ まず WPF は ActiveX がサポートされてません。 Window 上で ActiveX を使う場合、WindowsFormsHost を間に挟まなければなりません。
・ また WPF には DateTimePicker がありません。DatePicker のみです。(ただし WPF3.5以前は WPF Toolkit が必要)
・ さらに各コントロールには Window ハンドルがありません。業務システムの開発には関係ないでしょうが一応上げときます。
・ フォントの縦書きもサポートされてません。
他コントロールの挙動もかなり変わっていて、Forms で出来たことができなくなってたりします。以下、私のブログですが、参考までにどうぞ。
http://d.hatena.ne.jp/hilapon/20101128/1290958131
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年3月12日 4:15
- 回答としてマーク 山本春海 2012年3月30日 5:51
-
ひらぽんさんが書かれていることに少し加えます。
Windows 7ではきれいに配置されているコントロールが、Windows Xpだとコントロールの表示位置が若干ずれ、デザインが多少崩れる場合があります。
動作速度については、WPF全体というよりも、個々のコントロールの動作速度が気になる場合があります。例えば一覧を表示している場合に、スクロール速度が遅いなどです。動作速度は実現される機能や個々の主観によっても印象が変わりますから、一概に決めつけることはできませんが、個人的には全体として極端に遅いとは思っていません。総合的にWindows Formと比較して、今から開発されるのであれば、やはりWPFをお勧めします。また、Windows XPは再来年で延長サポートも終了しますので、業務での使用を計画されているのでしたら、ご注意ください。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 回答としてマーク 山本春海 2012年3月30日 5:51
-
ひらぽんさんが書かれていることに少し加えます。
Windows 7ではきれいに配置されているコントロールが、Windows Xpだとコントロールの表示位置が若干ずれ、デザインが多少崩れる場合があります。
ですね。その逆もあります。
私も当初 XP で開発していて Vista・7 で実行したとき、テキストボックスやラベル内にテキストがきちんと収まってなくてびっくりしたのを覚えてます。Forms ならそのようなことはないのですが・・・
しかし trapemiya さんが仰るように、将来的なことを考えるなら WPF での開発がお勧めです。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年3月12日 6:56
- 回答としてマーク 山本春海 2012年3月30日 5:51
-
動作環境ですが、
デスクトップ
Core2 Duo E6750 2.66GHz メモリ2GB OS Windows XP
Core2 Duo E7200 2.53GHz メモリ2GB OS Windows XP
ノートPC
Core2 Duo L7500 1.60GHz メモリ4GB OS Windows 7
pentium m 1.4GHz メモリ1.5GB OS Windows XP等で、他にもありますが、だいたいこの様なスペックです。
pentium mでは、Windowsフォーム以上にWPFの動作が遅くなりそうでしょうか?パフォーマンスについては一概には言えない様ですが、
一覧(DataGridView)はメインで使うので、スクロール速度は気になります。
あと、OSもWindows XP、Windows 7と、混在するので、コントロールの表示位置が若干ずれ、
デザインが多少崩れるというのも問題かと思います。如何でしょうか?
ご意見、宜しくお願いします。アプリによりますが pentium m だと少し厳しいような気がします。あと問題はビデオの性能。グラフィックチップの性能が低いと描画遅延の問題が発生したりします。これを回避するにはアプリケーションのハードウェアアクセラレーションを無効にするしかなさそうです。 無効にするには以下のコードを実行するといいです。
System.Windows.Media.RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
DataGrid に関してですが、スクロール性能が低いという話が上がってます。列を増やせば増やすほどスクロールがどんどん重くなるようです。これは以前 Connect に報告されてたんですが、いつの間にかなくなってますね(汗
デザインに関しては、7 を用意してテストするしかないでしょう。私の場合、7 で開発して、XP でテストを行ってます。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年3月16日 4:37 微修正
- 回答としてマーク 山本春海 2012年3月30日 5:51
すべての返信
-
設計思想の違いなどはさておいて、
> ・Windows Formに出来て、WPFに出来ない事をご存じであれば、教えて下さい。
できないことを幾つかあげてみます。
・ まず WPF は ActiveX がサポートされてません。 Window 上で ActiveX を使う場合、WindowsFormsHost を間に挟まなければなりません。
・ また WPF には DateTimePicker がありません。DatePicker のみです。(ただし WPF3.5以前は WPF Toolkit が必要)
・ さらに各コントロールには Window ハンドルがありません。業務システムの開発には関係ないでしょうが一応上げときます。
・ フォントの縦書きもサポートされてません。
他コントロールの挙動もかなり変わっていて、Forms で出来たことができなくなってたりします。以下、私のブログですが、参考までにどうぞ。
http://d.hatena.ne.jp/hilapon/20101128/1290958131
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年3月12日 4:15
- 回答としてマーク 山本春海 2012年3月30日 5:51
-
ひらぽんさんが書かれていることに少し加えます。
Windows 7ではきれいに配置されているコントロールが、Windows Xpだとコントロールの表示位置が若干ずれ、デザインが多少崩れる場合があります。
動作速度については、WPF全体というよりも、個々のコントロールの動作速度が気になる場合があります。例えば一覧を表示している場合に、スクロール速度が遅いなどです。動作速度は実現される機能や個々の主観によっても印象が変わりますから、一概に決めつけることはできませんが、個人的には全体として極端に遅いとは思っていません。総合的にWindows Formと比較して、今から開発されるのであれば、やはりWPFをお勧めします。また、Windows XPは再来年で延長サポートも終了しますので、業務での使用を計画されているのでしたら、ご注意ください。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 回答としてマーク 山本春海 2012年3月30日 5:51
-
ひらぽんさんが書かれていることに少し加えます。
Windows 7ではきれいに配置されているコントロールが、Windows Xpだとコントロールの表示位置が若干ずれ、デザインが多少崩れる場合があります。
ですね。その逆もあります。
私も当初 XP で開発していて Vista・7 で実行したとき、テキストボックスやラベル内にテキストがきちんと収まってなくてびっくりしたのを覚えてます。Forms ならそのようなことはないのですが・・・
しかし trapemiya さんが仰るように、将来的なことを考えるなら WPF での開発がお勧めです。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年3月12日 6:56
- 回答としてマーク 山本春海 2012年3月30日 5:51
-
ひらぽんさん、trapemiyaさん。
いつもご回答頂き、有難うございます。
ご意見、ブログ、とても参考になります。動作環境ですが、
デスクトップ
Core2 Duo E6750 2.66GHz メモリ2GB OS Windows XP
Core2 Duo E7200 2.53GHz メモリ2GB OS Windows XP
ノートPC
Core2 Duo L7500 1.60GHz メモリ4GB OS Windows 7
pentium m 1.4GHz メモリ1.5GB OS Windows XP等で、他にもありますが、だいたいこの様なスペックです。
pentium mでは、Windowsフォーム以上にWPFの動作が遅くなりそうでしょうか?パフォーマンスについては一概には言えない様ですが、
一覧(DataGridView)はメインで使うので、スクロール速度は気になります。
あと、OSもWindows XP、Windows 7と、混在するので、コントロールの表示位置が若干ずれ、
デザインが多少崩れるというのも問題かと思います。如何でしょうか?
ご意見、宜しくお願いします。
-
動作環境ですが、
デスクトップ
Core2 Duo E6750 2.66GHz メモリ2GB OS Windows XP
Core2 Duo E7200 2.53GHz メモリ2GB OS Windows XP
ノートPC
Core2 Duo L7500 1.60GHz メモリ4GB OS Windows 7
pentium m 1.4GHz メモリ1.5GB OS Windows XP等で、他にもありますが、だいたいこの様なスペックです。
pentium mでは、Windowsフォーム以上にWPFの動作が遅くなりそうでしょうか?パフォーマンスについては一概には言えない様ですが、
一覧(DataGridView)はメインで使うので、スクロール速度は気になります。
あと、OSもWindows XP、Windows 7と、混在するので、コントロールの表示位置が若干ずれ、
デザインが多少崩れるというのも問題かと思います。如何でしょうか?
ご意見、宜しくお願いします。アプリによりますが pentium m だと少し厳しいような気がします。あと問題はビデオの性能。グラフィックチップの性能が低いと描画遅延の問題が発生したりします。これを回避するにはアプリケーションのハードウェアアクセラレーションを無効にするしかなさそうです。 無効にするには以下のコードを実行するといいです。
System.Windows.Media.RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
DataGrid に関してですが、スクロール性能が低いという話が上がってます。列を増やせば増やすほどスクロールがどんどん重くなるようです。これは以前 Connect に報告されてたんですが、いつの間にかなくなってますね(汗
デザインに関しては、7 を用意してテストするしかないでしょう。私の場合、7 で開発して、XP でテストを行ってます。
ひらぽん http://d.hatena.ne.jp/hilapon/
- 編集済み ひらぽんModerator 2012年3月16日 4:37 微修正
- 回答としてマーク 山本春海 2012年3月30日 5:51