WPFで、スクリーンの正確な解像度を取得する方法

DIP, DPI, Windows, WPF

WPFはDIP(Device Independent Pixels:デバイス非依存ピクセル)という単位で画面サイズが定義されるため、正確な画面解像度を取得しようと思ったら単純にSystemParametersを使っただけではできない。

これではWindowsの設定から画面の拡大率を100%以外に調整していると解像度が正確に取得できなくなる。特に何年か前から普及している高解像度ディスプレイの場合は最初から100%以外の拡大率に設定されている場合が多い。

いつでも正確な解像度を取得するためには、DPI(Dots per Inch:1インチの長さの中にいくつのピクセルが並んでいるか)を考慮に入れて、計算で求める必要がある。

具体的には、DIPを物理的なピクセルに変換するために掛け算する必要がある係数を求めてやり、その係数をDIPの値に掛けてやることで正確な解像度が得られる。


関連ページ:マウス・キーボード操作の自動化機能をつくろう

DIP, DPI, Windows, WPF

Posted by もち