私はC#アプリケーションDPIに対応したいと思っています。 Windows APIにはSetProcessDPIAware()というコマンドが用意されていますが、問題はWindows Vista以上のWindowsのみで、XPでは動作しないという問題です。どのようにWindows版が使用されているかにかかわらず正しく表示されるようにコントロール、ボタン、フォントDPIを認識させるにはどうしたらいいですか?Windows XPのDPI対応アプリケーション
答えて
SetProcessDPIAware
を呼び出すと、ちょうど魔法のあなたのためにすべてDPIを認識してなりません。その目的は、あなたのアプリケーションがDPIに対応するよう正しく書かれていることをWindowsに宣言することです。さらに、その使用は推奨されません。代わりにマニフェストでDPIの認識を宣言する必要があります。これについてはMSDNにarticleがあります。
私がDPI認識をマニフェストで宣言すれば、それはWindows XPでも同様に機能するでしょうか? –
@zeemalik:簡単な解決策があるかもしれません。あなたが上記の私のコメントに気づいていないかどうかは分かりませんが、あなたが開発しようとしているC#アプリケーションの種類を教えてください。 Windowsフォーム(WinForms)またはWPFを使用していますか? –
WPFではなくWindowsフォームアプリケーションがあります。どのようにXPやWindowsの上位バージョンでも動くことができるように、すべてのコントロールとフォントが正しく表示されるようにするにはどうすればよいですか? –
はthis StackOverflow questionの設定をDPIするアプリケーションの応答を作成する方法についての私の適度に詳細な回答を参照してください。
ショートバージョンはScaleMode.Dpi
にすべてのフォームのAutoScaleMode
を変更することができるということです。
しかし、それはScaleMode.Font
でそれを残す方が良いでしょう。 DPIが増加するにつれてフォントが大きくなります。
どのような種類のC#アプリケーションですか?このWindowsフォームですか? –
Windowsフォームアプリケーション。 –