DOBON.NET DOBON.NETプログラミング掲示板過去ログ

画面解像度によるサイズ変更

分類:[.NET]

はじめまして。

画面解像度によって表示されるフォームの大きさが
変わってしまう事が恥ずかしながらわかりました。

何かいい方法でForm_Load時に何かして、解像度に左右されずに
表示される方法があれば教えてください。

初心者ですみません。
■No175に返信(kimuさんの記事)
> はじめまして。
>
> 画面解像度によって表示されるフォームの大きさが
> 変わってしまう事が恥ずかしながらわかりました。
>
> 何かいい方法でForm_Load時に何かして、解像度に左右されずに
> 表示される方法があれば教えてください。

つまり画面上のサイズで、例えば、よこ10cm、たて8cmのようにしたいということですね?

次のようにして出来ればよいのですが、そううまくは行きません。

Graphics g = this.CreateGraphics();
//横幅を4インチにする
this.Width = (int) g.DpiX * 4;
//縦を2インチにする
this.Height = (int) g.DpiY * 2;
g.Dispose();

どうしてもということになると、ユーザーに画面上の長さを実際に測ってもらい、それを元にフォームの大きさを計算するという方法ぐらいしか私には思いつきません。

> 画面解像度によって表示されるフォームの大きさが
> 変わってしまう事が恥ずかしながらわかりました。
>
> 何かいい方法でForm_Load時に何かして、解像度に左右されずに
> 表示される方法があれば教えてください。

解像度によって・・・と書かれているので、
画面全体に対して、特定の割合のサイズで表示したい!
と、いう事なのかな?
であれば、解像度を取得し、それに対する割合で計算すれば
出来ると思います。
> 解像度によって・・・と書かれているので、
> 画面全体に対して、特定の割合のサイズで表示したい!
> と、いう事なのかな?
> であれば、解像度を取得し、それに対する割合で計算すれば
> 出来ると思います。

確かに多分そうですね。私の勘違いでした。となると、例えば次のような感じになるでしょうか。

this.Width = System.Windows.Forms.Screen.GetBounds(this).Width / 5;
this.Height = System.Windows.Forms.Screen.GetBounds(this).Height / 5;

DOBON.NET | プログラミング道 | プログラミング掲示板