C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

多種のディプレイに対応できるアプリ /kiku (24/07/11(Thu) 16:13) #103255
Re[1]: 多種のディプレイに対応できるアプリ /くま (24/07/12(Fri) 02:11) #103257
  └ Re[2]: 多種のディプレイに対応できるアプリ /kiku (24/07/12(Fri) 12:53) #103258
    └ Re[3]: 多種のディプレイに対応できるアプリ /radian (24/07/12(Fri) 14:40) #103259
      └ Re[4]: 多種のディプレイに対応できるアプリ /kiku (24/07/16(Tue) 08:37) #103261
        └ Re[5]: 多種のディプレイに対応できるアプリ /kiku (24/07/17(Wed) 12:59) #103262 解決済み


親記事 / ▼[ 103257 ]
■103255 / 親階層)  多種のディプレイに対応できるアプリ
□投稿者/ kiku (431回)-(2024/07/11(Thu) 16:13:50)

分類:[.NET 全般] 

現在、.NETFrameWork4.8.1、WinFormアプリを開発し、利用しています。
お客様の利用数がかなり増えており、
下記のようなご要望を頂いております。
・デフォルトのディスプレイ設定では、アプリ画面が見切れてしまう。
・ディスプレイの拡大率を変更できる場合には、
 拡大率を変更することでアプリ画面は見れるようになるが
 別のアプリが極端に小さくなったり、大きくなったりし、使いづらい。
・ディスプレイの拡大率を変更できない場合には、ディスプレイを買い直す必要がある。

こんな要望を受け、なんとか対処できないかと検討しています。
ここから質問です。
WPFアプリなら、自動的にフォントサイズや、
ボタンなどのコントロールのサイズを
DPIやディプレイの解像度や拡大率に合わせて
自動的に調整するような機能を実現することは可能でしょうか?

最終的には、DPIや解像度や拡大率の組み合わせを
意識して実装することになるのでしょうか?

当方はWPFアプリ開発については経験0のため、
経験のある方にお聞きしたいです。

[ □ Tree ] 返信 編集キー/

▲[ 103255 ] / ▼[ 103258 ]
■103257 / 1階層)  Re[1]: 多種のディプレイに対応できるアプリ
□投稿者/ くま (31回)-(2024/07/12(Fri) 02:11:46)
自分の場合で恐縮ですが、最近
・Windows Forms
・.NET Framework 4.8.1
で対応しました。

Windows フォームでの自動スケーリング
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/automatic-scaling-in-windows-forms?view=netframeworkdesktop-4.8
・ScaleChildren プロパティ
・GetScaledBounds メソッド
・ScaleControl メソッド
のオーバーライドでの方法があったのですが、メンドクサくなって

a. 基本TableLayoutPanelの調整で済ます。
b. それでも対応できない範囲は
1. Loadのタイミングでコントロールを登録するクラスを作成。
2. クラス内には、DPIが96(100%)ではない場合
・対象コントロール
・位置サイズを変更するか?
・フォントサイズを変更するか?
を定義しておいてしのぎました。

ただ複数モニタでDPIが違う場合とかをテストはできませんでした
(Window.DpiChangedイベントとかうまく試せなかった...)

フォント関係は
https://qiita.com/felis_silv/items/efee4b1a397b0b95100a
ピクセル単位で指定できたのはよかった。
[ 親 103255 / □ Tree ] 返信 編集キー/

▲[ 103257 ] / ▼[ 103259 ]
■103258 / 2階層)  Re[2]: 多種のディプレイに対応できるアプリ
□投稿者/ kiku (432回)-(2024/07/12(Fri) 12:53:08)
No103257 (くま さん) に返信
> 自分の場合で恐縮ですが、最近
> ・Windows Forms
> ・.NET Framework 4.8.1
> で対応しました。

貴重な情報ありがとうございます。
なるほど、WinFormのままという選択肢もあるんですね。
このあたりの機能は利用したことがないため
サンプルアプリを作って試してみたいと思います。

他の方のアドバイスも聞きたいため、
しばらく待ってみようと思います。
[ 親 103255 / □ Tree ] 返信 編集キー/

▲[ 103258 ] / ▼[ 103261 ]
■103259 / 3階層)  Re[3]: 多種のディプレイに対応できるアプリ
□投稿者/ radian (160回)-(2024/07/12(Fri) 14:40:34)
2024/07/12(Fri) 14:40:57 編集(投稿者)

> WPFアプリなら、自動的にフォントサイズや、
> ボタンなどのコントロールのサイズを
> DPIやディプレイの解像度や拡大率に合わせて
> 自動的に調整するような機能を実現することは可能でしょうか?

WPFだと、ViewBoxというコントロールを使って親に合わせて拡大縮小するような事は出来ます。
https://blog.okazuki.jp/entry/20130105/1357400239
[ 親 103255 / □ Tree ] 返信 編集キー/

▲[ 103259 ] / ▼[ 103262 ]
■103261 / 4階層)  Re[4]: 多種のディプレイに対応できるアプリ
□投稿者/ kiku (433回)-(2024/07/16(Tue) 08:37:54)
No103259 (radian さん) に返信
> 2024/07/12(Fri) 14:40:57 編集(投稿者)
> WPFだと、ViewBoxというコントロールを使って親に合わせて拡大縮小するような事は出来ます。
> https://blog.okazuki.jp/entry/20130105/1357400239

ありがとうございます。
これは良いですね。
これも試してみたいと思います。
[ 親 103255 / □ Tree ] 返信 編集キー/

▲[ 103261 ] / 返信無し
■103262 / 5階層)  Re[5]: 多種のディプレイに対応できるアプリ
□投稿者/ kiku (434回)-(2024/07/17(Wed) 12:59:16)
No103261 (kiku さん) に返信
> ■No103259 (radian さん) に返信
>>2024/07/12(Fri) 14:40:57 編集(投稿者)
>>WPFだと、ViewBoxというコントロールを使って親に合わせて拡大縮小するような事は出来ます。
>>https://blog.okazuki.jp/entry/20130105/1357400239
>
WPFの方向で進めることにしました。
何か問題が発生しましたら、
別スレッドで相談させて頂きたいと思っています。
解決済み
[ 親 103255 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -