しばらくは問題なく動作していましScreen.PrimaryScreen.Bounds.Size
たが、大画面テレビに接続された Windows7 コンピューターでは、正しくない値が返されます。
私は他の場所で試してみSystemInformation.PrimaryMonitorSize
ましたが、同じ値が得られました。
デスクトップを右クリックして画面の解像度を取得すると、 と表示されます1920x1080
。上記の2つは私に与えています1280x720
。
私はWPFバージョンも試しました:
var w = System.Windows.SystemParameters.PrimaryScreenWidth;
var h = System.Windows.SystemParameters.PrimaryScreenHeight;
MessageBox.Show(new Size((int)w, (int)h).ToString());
(デスクトップを右クリック)Personalize > Desktop
オプションを使用して、ディスプレイ サイズを 150% に変更しました (画面が 60 インチで、かなり離れた場所に座っているため)。
上記から返された値を調整できるように、これを検出する方法は?
注:右クリックの実行可能ファイルでこれを回避し、互換性を調整してDPI仮想化を無効にする方法を発見しましたが、それでもプログラムによる解決策が必要なので、ユーザーがこれを自分で調整する必要はありません:参照 - http: //msdn.microsoft.com/en-us/library/dd464660(VS.85).aspx#dpi_virtualization