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

わんくま同盟

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

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


(過去ログ 103 を表示中)
■61680 / )  Windowsのフォント設定で中や大を選択されている場合
□投稿者/ たか@WEB屋 (23回)-(2011/08/27(Sat) 11:57:29)

分類:[.NET 全般] 

2011/08/27(Sat) 12:16:38 編集(投稿者)

.netframework3.5でWindowsアプリを作っています。

フォームのサイズ変更にあわせてアプリ内の領域をResize()イベントで書き換える処理を書いていて
通常はうまく動作するのですが Windowsのフォントの設定で中とか大を選択されていた場合に表示が崩れてしまいます。


以下の■の部分がフォームのサイズに応じてサイズが変更される部分、
□がフォームのサイズに寄らず常に同じ大きさの部分です。


■■■■□□
■■■■□□
■■■■□□
■■■■□□
■■■■□□
■■■■□□

ですので 横幅を広げると↓みたいに増えます。
■■■■■■□□
■■■■■■□□
■■■■■■□□
■■■■■■□□
■■■■■■□□
■■■■■■□□

 ■の横幅= form.Size.Width - □の横幅(固定の数字);

としているのですがWindowsのフォントサイズを中とか大にしていると■が大きく表示されすぎて
こんな感じに□が小さくなってしまいます。
■■■■■■■□
■■■■■■■□
■■■■■■■□
■■■■■■■□
■■■■■■■□
■■■■■■■□

デバッグで見ていくと□のLocationを指定している部分が悪さをしているようで
この一文をコメントアウトすると初期値ではうまく描画できました。
(もちろんリサイズした時にメニューが動かずこのままではダメなのですが)

□のロケーション.X = form.Size.Width - ■.Size.Width

みたいに指定しているのですがこの部分どう修正すれば上記のケースでも対応できるのでしょうか?
この対処法を教えてください。


なおWindowのフォントサイズを中を選んだ場合(125%)と書いてあったので試しに
□のロケーション.X = form.Size.Width - ■.Size.Width/1.25
とするとうまく描画でいます。

ということはWindowsのフォントサイズを取得してそれに応じて再描画すればいいのか?とも思いますがフォントサイズの取得の仕方がわかりませんし
そもそもそんな面倒なことしなくても何か方法が用意されていそうな気もします(なにせどちらもマイクロソフトの設計なのですから)


何かご存じでしたらよろしくお願いいたします。
返信 編集キー/


管理者用

- Child Tree -