none
Formのボタンやラベルのサイズの調整(100%→150%などの表示の自動調整) RRS feed

  • 質問

  • Visual Basic .NETでWindowsフォームで業務系のシステムを作っています。

    開発用のパソコンは
    拡大縮小とレイアウト
     テキスト、アプリ、その他の項目のサイズを変更する
    で100%にして作っているのですが

    使用する方のパソコンによっては150%(推奨)になっていたりして
    画面からはみ出てしまいます。

    どのように作ったら、あるいはどのプロパティを使ったら、
    良い具合に画面サイズに合わせて調整されるのでしょうか?


    2019年11月2日 11:30

回答

  • DPI スケーリングについて考慮せずに作った場合、通常、150% 以上のスケーリングでは「100% で表示した場合のフォームを 1.5 倍に(ぼやける)拡大をして見せる」という、Windows 側の DPI 仮想化の仕組みが動きます。

    さて、「画面からはみ出してしまいます」とのことですが、どういった見た目になっていますか?


    1.ぼやけて拡大していて、レイアウトは崩れていないが、フォームが画面に入りきらない(右側・下側が切れてしまう)
    2.コントロールのサイズが変わらず、文字が大きくなって文字がはみ出してしまう

    もし、1 番だとすると、文字のスケーリング(150% の文字の大きさ)に対して、画面の解像度が足りていないと思われます。
    その文字の大きさで画面に収まるようにレイアウトを調整するか、文字自体を小さくしてしまうかといったことが必要になります。
    UI の仕様としてどう持って行きたいかによってアプローチは変わりますが、かんたんに対応はできません。
    (プロパティだけでは対応できないし、コードで書くにしても大変だし…ということが多いです)

    2019年11月2日 13:56
    モデレータ

すべての返信

  • DPI スケーリングについて考慮せずに作った場合、通常、150% 以上のスケーリングでは「100% で表示した場合のフォームを 1.5 倍に(ぼやける)拡大をして見せる」という、Windows 側の DPI 仮想化の仕組みが動きます。

    さて、「画面からはみ出してしまいます」とのことですが、どういった見た目になっていますか?


    1.ぼやけて拡大していて、レイアウトは崩れていないが、フォームが画面に入りきらない(右側・下側が切れてしまう)
    2.コントロールのサイズが変わらず、文字が大きくなって文字がはみ出してしまう

    もし、1 番だとすると、文字のスケーリング(150% の文字の大きさ)に対して、画面の解像度が足りていないと思われます。
    その文字の大きさで画面に収まるようにレイアウトを調整するか、文字自体を小さくしてしまうかといったことが必要になります。
    UI の仕様としてどう持って行きたいかによってアプローチは変わりますが、かんたんに対応はできません。
    (プロパティだけでは対応できないし、コードで書くにしても大変だし…ということが多いです)

    2019年11月2日 13:56
    モデレータ
  • ご回答ありがとうございます!なるほど!すごくよく分かりました!!
    1920x1020の画面解像度で
    100%で目一杯詰めて配置しているので
    例1の状態で、右側・下側がはみ出て操作できません。

    簡単には対応できないということも分かって安心しました!

    2019年11月2日 14:24