[C#]Windows.Formsアプリでの高解像度対応

最近のディスプレイは高解像度化が進んでいて、近頃導入したノートPC(Panasonic CF-SZ5)も12.1インチのディスプレイでWUXGA(1920×1200)で、約180ppiとなっています。以前に使っていたノートPC(Panasonic SF-S10)がWUXGA(1280×800)で約120ppiだったので1.5倍となっています。
Windows10で表示スケールで文字を大きくするように設定した場合、C#(.Net)で作成したWindows.Formアプリの表示が下図のようにぼやけてしまいます。

対応前(文字がぼやけている)

アプリケーションマニュフェストファイルを追加する方法とかイロイロとあるのですが、横着な私はWin32APIのSetProcessDPIAware()を実行してこの問題を回避しました。

対応後(文字がくっきりした)

さて、実際のコードはこんな感じ。
main()中でForm1のコンストラクタを呼び出す前に、SetProcessDPIAware()を呼び出します。

static class Program {
	/// <summary>
	/// アプリケーションのメイン エントリ ポイントです。
	/// </summary>
	[STAThread]
	static void Main() {
		SetProcessDPIAware();
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new Form1());
	}

	[System.Runtime.InteropServices.DllImport("user32.dll")]
	private static extern bool SetProcessDPIAware();
}

とりあえず参考まで。


この記事の作成には下記サイトを参考にさせて頂きました。