トップ回答者
Windows10Homeでの解像度取得の挙動につきまして

質問
-
お世話になります。
.NetFrameWorkで「PrimaryScreen」でディスプレイの解像度情報が
取得できますが、「Windows10 Home 32bit」で解像度により
一部の解像度で正しく値を取得できない場合があります。
同様の事象が発生している方はいらっしゃらないでしょうか?
現状、他に手持ちのWindows10の端末が無いため、
.NetFrameWorkの問題かディスプレイドライバなどのハードの問題か分からず、
困り果てている状態です。
ご助言を頂けますと助かります。
以下、実行したVB.NETのソースです。
VisualStudioの対象のフレームワーク設定は.NET Framwork3.5にしています。
--------------プログラム ここから---------------------
'ディスプレイの高さ
Dim h As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
'ディスプレイの幅
Dim w As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
'結果表示
MsgBox("解像度:" & w & "x" & h)
--------------プログラム ここまで---------------------
以上のプログラムを
ディスプレイの解像度をWindowsの設定で変更しながら実行すると
以下のような結果になりました。
問題なく拾える解像度もあれば、拾えない解像度もあります。----------------------------------------------------------
(判定結果○or×):Windows上の設定 → プログラムの返却値
----------------------------------------------------------
○:800x600 → 800x600
○:1024x768 → 1024x768
○:1152x864 → 1152x864
○:1280x600 → 1280x600
○:1280x720 → 1280x720
○:1280x768 → 1280x768
○:1280x800 → 1280x800
×:1280x960 → 1024x768
×:1280x1024 → 1024x819
○:1360x768 → 1360x768
○:1366x768 → 1366x768
×:1400x1050 → 1120x840
×:1440x900 → 1152x720
×:1600x900 → 1280x720
×:1600x1200 → 1067x800
×:1680x1050 → 1120x700
×:1920x1080 → 1280x720
×:1920x1200 → 1280x800
回答
-
HighDpiの話で、pixelが仮想化されているためでしょう。
manifestを書いたりすれば本当のpixelが取れますが、それなりに副作用が出るでしょう。https://blogs.msdn.microsoft.com/ttanaka/2014/07/16/dpihigh-dpi-1-dpi/
https://blogs.msdn.microsoft.com/ttanaka/2014/07/24/dpihigh-dpi-2-12398/
https://blogs.msdn.microsoft.com/ttanaka/2014/08/22/dpihigh-dpi-3-12503/jzkey
- 回答としてマーク ブルマン 2016年11月24日 10:09
すべての返信
-
HighDpiの話で、pixelが仮想化されているためでしょう。
manifestを書いたりすれば本当のpixelが取れますが、それなりに副作用が出るでしょう。https://blogs.msdn.microsoft.com/ttanaka/2014/07/16/dpihigh-dpi-1-dpi/
https://blogs.msdn.microsoft.com/ttanaka/2014/07/24/dpihigh-dpi-2-12398/
https://blogs.msdn.microsoft.com/ttanaka/2014/08/22/dpihigh-dpi-3-12503/jzkey
- 回答としてマーク ブルマン 2016年11月24日 10:09