Discussion:
解像度のの違いによる見栄え
(too old to reply)
のぶ
2007-05-29 08:28:04 UTC
Permalink
はじめまして、こんにちは
初めて投稿させて頂きます
今問題になっている内容は「解像度の違いによって画面表示の違いをどう吸収するか」です。
例を挙げますと、1024*768の解像度に合わせて作成したフォームを1600*1200の解像度で表示している画面で見た場合、フォームが小さく、
見にくくなってしまいます。
そこで1600*1200でも大きさが問題なく表示させるように修正をかけます
私の考えている方法としては二つのフォームでも問題なく表示できるように
解像度がxxだったらフォームのサイズとボタンのサイズをxxにしてという感じで
分岐文を作り各解像度への対応としようとしているのですが分岐文以外に
有効な方法はあるのでしょうか?皆さんはいかが対応なさってますか?
Takeshi SHIGIHARA
2007-05-30 13:11:04 UTC
Permalink
Post by のぶ
今問題になっている内容は「解像度の違いによって画面表示の違いをどう吸収するか」です。
構想していた画面解像度より小さくなるならまだしも、大きくなるのならば
私ならば放っておくことでしょう。広大な画面領域が欲しいからこそ、
1600x1200やら1920x1050やらの大きなディスプレイを使っているのであって
わざわざ領域の大きさに合わせて勝手にサイズを拡大されるのは迷惑、とい
う考え方もあります。
……と、まずは屁理屈を並べてケムに巻いてしまおうと試みます。


言い負けた場合
 拡大するときは相似形に大きくするのでしょうか、それとも各サイズ用に
合わせた専用のフォームを用意するのでしょうか、それとも例えばExplorer
のようにほとんどのパーツは固定位置でリスト部分だけが大きくなるような
仕組みでしょうか。

専用フォームの場合
 のぶさんの方法で十分ではないかと思います。

一部のリストなどのみが大きくなればよい場合
 フォームには Anchor 機能がありますから、それをうまく利用します。
 わたしは、たいていこれで逃げています。フォームが閉じる際にでも
 サイズ等を記録しておき、次の起動時にその位置、サイズで起動する
 ようにしておけば、それほど文句などは来ませんから。

相似形の場合(*これについては頭の中だけで考えてます)
 フォームやコントロールの基礎となる System.Windows.Forms.Control
 にはLocationとかSizeとかのプロパティがあります。
 メインとなるフォームやダイアログなどのコンストラクタあたりで、
 これらの数値を開発時の解像度と実行環境の解像度で倍率を作って、
 適切に数値を与えなおせば良いかと思います。
 ただし、フォームに乗っているすべてのコントロールのプロパティを
 変えなければならないので、たとえば再帰的な処理などでうまく更新
 しなければならないでしょう。
 また、ラベルについては、単純にSizeを変えただけだと、まず間違い
 なく間が開きすぎてトボケた感じになるのは、どうしようもないでし
 ょう。
--
----- Takeshi SHIGIHARA
***@tka.att.ne.jp -----
ブタも投げれば空を飛ぶ--RFC1925.
unknown
2007-05-31 02:04:01 UTC
Permalink
Takeshiさん こんにちは
アドバイスありがとうございます
お客様の話だと、高解像度で表示する用途が稀にあるようで
専用フォームを作る方向で落ち着きそうです
Anchorを使う方向も検討しましたが、文字のサイズ等も変更しなければならない
経緯もあり、画面サイズ・文字・コントロール共に固定で作る方向で考えてみようかと思います
大変参考になりました 
ありがとうございました
Post by Takeshi SHIGIHARA
Post by のぶ
今問題になっている内容は「解像度の違いによって画面表示の違いをどう吸収するか」です。
構想していた画面解像度より小さくなるならまだしも、大きくなるのならば
私ならば放っておくことでしょう。広大な画面領域が欲しいからこそ、
1600x1200やら1920x1050やらの大きなディスプレイを使っているのであって
わざわざ領域の大きさに合わせて勝手にサイズを拡大されるのは迷惑、とい
う考え方もあります。
……と、まずは屁理屈を並べてケムに巻いてしまおうと試みます。
言い負けた場合
 拡大するときは相似形に大きくするのでしょうか、それとも各サイズ用に
合わせた専用のフォームを用意するのでしょうか、それとも例えばExplorer
のようにほとんどのパーツは固定位置でリスト部分だけが大きくなるような
仕組みでしょうか。
専用フォームの場合
 のぶさんの方法で十分ではないかと思います。
一部のリストなどのみが大きくなればよい場合
 フォームには Anchor 機能がありますから、それをうまく利用します。
 わたしは、たいていこれで逃げています。フォームが閉じる際にでも
 サイズ等を記録しておき、次の起動時にその位置、サイズで起動する
 ようにしておけば、それほど文句などは来ませんから。
相似形の場合(*これについては頭の中だけで考えてます)
 フォームやコントロールの基礎となる System.Windows.Forms.Control
 にはLocationとかSizeとかのプロパティがあります。
 メインとなるフォームやダイアログなどのコンストラクタあたりで、
 これらの数値を開発時の解像度と実行環境の解像度で倍率を作って、
 適切に数値を与えなおせば良いかと思います。
 ただし、フォームに乗っているすべてのコントロールのプロパティを
 変えなければならないので、たとえば再帰的な処理などでうまく更新
 しなければならないでしょう。
 また、ラベルについては、単純にSizeを変えただけだと、まず間違い
 なく間が開きすぎてトボケた感じになるのは、どうしようもないでし
 ょう。
--
----- Takeshi SHIGIHARA
ブタも投げれば空を飛ぶ--RFC1925.
Loading...