アプリケーションの構築時にどうしても画面の拡大率が必要になりました。高解像度化したノートパソコンなど、拡大率が100%でないことが多いので、画面表示の位置にハマりました。なかなか拡大率と実DPIの取得する方法が見つからず、いろいろとググりましたが、なかなか簡単に使える方法が見つかりませんでした。とりあえずちょろっと画面拡大率を取得したいときのために記録しておきます。
実DPIと仮想DIPを取得する
Screen.PrimaryScreen.Bounds.Heighでシステムディスプレイの解像度が取得できます。
SystemParametersで拡大時の画面サイズ(Pixel)が取得できます。
この2つの値を使って倍率を計算します。
using System.Windows;
using System.Windows.Forms;
double dpiMag = SystemParameters.PrimaryScreenHeight; // 拡大時の画面高さ(Pixel)
double dpi = Screen.PrimaryScreen.Bounds.Height; // 画面の設定(Pixel)
double dpiMagRate = dpi / dpiMag; // 倍率