高DPI環境における Windows Forms アプリ終了のお知らせ

ここ最近、私が携わっているソフトを Surface Pro 4 で使いたいというお客様が増えてまいりました。


そのソフトは「クラウド型なのでデスクトップでもノートでもどこでも使える」というのが売りなのですが、Surfase Pro 4 にインストールしたお客様から、一部の機能で
「画面崩れて入力欄見えねーよっ!(怒)」
というお叱りの声がっ!!早速 Surface Pro 4 を開発チームで購入して試したところ、思わぬ事実が発覚したのでした。

結論から言えば・・・
Windows Forms 終了のお知らせ
ですっ!ヽ(^o^)ノ*1

Forms は高DPIに対応していない

このソフト、もともと Forms で開発したものですが、2011年以降より WPFに移行を開始しました。ログインから始まるメイン処理の流れはWPF化をほぼ完了し、新規画面もすべてWPFで開発してまして、これらの画面は Surface Pro 4 で問題なく表示されます。ところがマスタ系を含む一部残った Forms の画面はかなり悲惨な状態になってしまいます。例えばこんな感じ・・・

まずデスクトップPC、SXGA(1280x1024) のモニタに表示された Forms 画面の抜粋です。


次に同じ画面をSurface Pro 4で表示してみる。Surface 12.3″(画面サイズ12.3インチ、2736x1824) で、「テキスト、アプリ、その他項目のサイズ」が200%(推奨)の場合です。


これ、「テキスト、・・・項目のサイズ」を100%にすれば収まるかと思ったら、デザインが崩れたままです。状況はまったく変わりません(汗)

では、同じインターフェイスを持つ WPF 画面ではどうか。SXGA のモニタでも、Surface Pro 4 既定の解像度と項目サイズでも、いずれも表示は変わりません。ナイスですね!


以上のことから、Forms の画面は高DPIのモニタに対応しておらず、WPF の画面は高DPIのモニタでも意図したデザインできちんと表示されることが確認できます。


やはりWindows Forms はオワコンなのか

この問題、下記記事の「アプリの画面のスケーリングを無効にする」を試みましたが、解決できません。Forms の画面は崩れたままです。
デスクトップ アプリの表示の問題の修正方法


WPFの高DPI対応に関しては、艦これビューアーで有名なぐらばくさんの記事が詳しいです。以下、参考記事・・・。
Visual Studio 2012 のような光るウィンドウを作る (再)、そして WPF での高 DPI 対応
Room metro Tokyo #1 資料公開


上のスライドの8枚目とまったく同じ状況になっててわらたw
いずれにせよ、今後タブレットだけに限らず高DPIのモニタが普及すること考えたら、もはや Forms の選択はあり得ないと言っていいでしょう。


 

*1:いや、MS的にはとっくに終わっているのだが・・・