作っているアプリをマルチモニターに対応させつつ、異なる DPI でも問題なく動くように実装していたら、思ったよりもはまったのでメモとして残します。 動作確認用にアプリケーションを作ったので、とりあえず公開しておきました。 それぞれのボタンを押すと、表示されているのモニターの中央に移動するという簡単なアプリです。 WPF では Window 座標と Monitor サイズも DIP になる 当たり前ですが、WPF は全てを DIP で扱うようになっているので SystemParameters から取れるモニターのサイズも DIP に変換されたものが返って来ます。 なので解像度が 3000x2000 かつ、表示スケールを 150% で運用してる Surface Book 2 でサイズを取得すると、以下のように 2/3 されたサイズが返って来ます。 DIP のおかげで DPI をあまり意識せずと
![Per-Monitor DPI 環境下で WPF の Window 位置を調整する - しばやん雑記](https://cdn-ak-scissors.b.st-hatena.com/image/square/1dfaa6f54871c4d714cdab31c319693f4307027e/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fs%2Fshiba-yan%2F20190611%2F20190611233414.png)