2016-12-03 22 views
0

Windowsデバイス上のユーザーモニタの解像度(ピクセル数ではなく現在の作業解像度)を取得しようとすると、面白い問題が発生します。 Screen.getPrimary().getBounds()は、すべてのシステムのALMOSTで正しい結果を返します。 Win 10ラップトップに問題があります。それらの解像度は、4KおよびFullHDデバイスであっても、1280x768と認識されます。JavaFX Screen.getPrimary()。getBounds()が不正な画面サイズを返します。

Iは、以下のアプローチを試みた:一つだけ(

  • GraphicsDevice getDisplayMode().getWidth();
  • GraphicsEnvironment getScreenDevices()(一方のみが検出された)すべての画面を反復した後、すべての画面を反復次いで

    • Toolkit.getDefaultToolkit().getScreenSize()
    • Screen.getScreens()およびが見つかりました)

    私はもうアイデアはありません。すべてのWindowsデバイスで画面解像度を正しく取得する方法について、他の方法がありますか?

  • 答えて

    1

    あなたのデバイスやWindows 10は特に分かりませんが、覚えておくべきことが1つあります。レポートされるサイズは、デバイスの物理ピクセルサイズではありません。代わりに、スケーリングされたサイズが報告されます。 Windowsでは、これはデバイスの表示設定によって異なります。例えばMacの場合、物理的なピクセルサイズは2880x1800ですが、報告されるサイズは1440x900です。設定によっては、これは必ずしも正確に2の因子ではありません。

    +0

    はい、あなたは正しいです。 FullHDラップトップでは、もっと低い値(1600x900など)に設定したときにFullHDラップトップが正しい解像度を報告していることを忘れていました。それは特定の決議でのみ "嘘"です!そして、はい、私はそれが正確にスケールされた解像度を報告しても問題ありませんが、それらの値は毎回正しいとは限りません... – shaiko

    +0

    いいえ、私は解像度を変更することについて話していません。私はデフォルトのテキストサイズの設定について話しています。私はそれがWindowsでどのように呼び出されるのかわかりません。 – mipa

    +0

    ああ、私はあなたをmisunrestood。あなたが正しいです!それが問題になる可能性があります。私は今それをチェックします! – shaiko

    関連する問題