none
Windows10Homeでの解像度取得の挙動につきまして RRS feed

  • 質問

  • お世話になります。

    .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

    2016年11月24日 5:34

回答

  • 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
    2016年11月24日 7:23

すべての返信

  • 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
    2016年11月24日 7:23
  • jzkey様

    情報ありがとうございます。
    ご教授頂きました情報で原因の把握ができました。

    ディスプレイのカスタマイズにて、
    「テキスト、アプリ、その他の項目のサイズを変更する」が「150%(推奨)」となっており、
    これを100%に変更したところ、正しい値が取得できるようになりました。

    manifestへの記述を検討致します。

    ご回答ありがとうございました。

    2016年11月24日 10:09