- PR -

Windowsフォームのサイズについて

1
投稿者投稿内容
Ken
会議室デビュー日: 2002/11/09
投稿数: 3
投稿日時: 2002-11-09 20:45
このような場所でC#を始めて1ヶ月足らずの未熟者が質問するのはどうかとは思ったのですが、手持ちの書籍を見ても解決できなかったので初めて投稿させて頂きました。

Windowsフォームのサイズを設定する値をディスプレイの画面サイズより大きく設定したいのですが、

this.ClientSize = new System.Drawing.Size(1920, 1080);

と設定しても自動的にディスプレイの画面サイズに丸め込まれてしまいます。
MSDNの Formクラスのメンバも探してはみたのですが、それらしい設定項目が見つけられませんでした。
どなたか方法をご存知の方がいらっしゃいましたら教えて頂けないでしょうか。。。
Hirashige
常連さん
会議室デビュー日: 2002/10/26
投稿数: 29
投稿日時: 2002-11-10 17:00
>Windowsフォームのサイズを設定する値をディスプレイの画面サイズより
>大きく設定したいのですが、
>
>this.ClientSize = new System.Drawing.Size(1920, 1080);
>
>と設定しても自動的にディスプレイの画面サイズに丸め込まれてしまいます。

 良くわかりませんがこれってWindows自体の仕様なのではないですか。通常画面よりウインドウサイズが大きくなると色々困った事になりますから......

 フォームのサイズに関係なく描画領域は大きく取れますのでスクロールを利用するのが一般的ではないでしょうか?

 因みにフォームのサイズは this.ClientSize ではなく this.Size で変えます、ClientSize が変われば必然的にフォームサイズも変わりますが+αのサイズになりますね。

 画面サイズより大きいウインドウを作りたい理由が判りませんので役に立たない情報だと思いますがご容赦願います。
Ken
会議室デビュー日: 2002/11/09
投稿数: 3
投稿日時: 2002-11-10 23:40
Hirashigeさんレスありがとうございます。

えっと少し説明不足だったようです。
カレント領域に映像を表示させようと思っているのですが、映像読み込み時に映像の高さがディスプレイの高さと同等もしくは大きい場合、映像の下のにくる操作部が飛んでしまって困ってます。
ディスプレイサイズを超えないよう縮小しろと言われるかもしれませんが、映像の性質上、縮小されては困るものなのでそれも出来ません・・・
フォーム自体はタイトルバーがなくてもドラックで移動できるので画面よりはみ出しても問題はありません。
Windows Media Player 6.4のフォームはディスプレイサイズ以上の大きさにすることも出来るので、OS側で規制されていると言うことは無いと思うのですが、未だ方法が見つかっていません。
.NET Frameworkでは無理なのでしょうか・・・
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2002-11-11 13:19
>映像読み込み時に映像の高さがディスプレイの高さと同等もしくは大きい場合、映像の下のにくる操作部が飛んでしまって

これはつまり、映像を全体表示した下に操作部を表示しているということですか?
そうなら、ウィンドウを画面より大きくしても、結局全体は表示できない(操作部か映像か表示されない部分が出てくる)と思いますが。

もし、画面よりも大きなウィンドウを使うことにより、何か(通常のWindowsプログラムではない)特別な効果を狙っているのであれば良いんですが、通常のプログラムとしては設計的に問題があるのだと思います。
「ウィンドウがどんな大きさであれ、下部に操作部、残りの領域で映像を表示、はみ出すなら(映像部のみを)スクロール」いわゆる普通のWindowsプログラムならこうなると思います。
Hirashige
常連さん
会議室デビュー日: 2002/10/26
投稿数: 29
投稿日時: 2002-11-11 17:23
>Windows Media Player 6.4のフォームはディスプレイサイズ以上の大きさに
>することも出来るので、OS側で規制されていると言うことは無いと思うので
>すが、未だ方法が見つかっていません。
>.NET Frameworkでは無理なのでしょうか・・・

 確かに Media Player 6.4 は画面サイズより大きくできますね....
 でも Media Player 7.0 では出来なくなっています。
 また .NET Framework以前の Visual C++ 6.0 でも普通のやり方では出来ませんね。と言っても普通でないやり方(多分低レベルの関数でDeviceCapsの値を無視するようにする?)は勿論知らないのですが。
 Media Player 6.4 が特殊なのだと思いますがMSが作るものは時々凡プログラマ(自分の事です)の人知を越えていますので...

 MSも次の Media Player 7.0 ではやめてしまったようなのでやはり良いUIだとは思わなかったんだろうと思います。私も標準的なWindowsプログラムからは逸脱していると思いますが、どうしても必要な状況もあるのかもしれません。
 実現には、かなり低レベルのAPIを探すしか無いような気がしますが....
Ken
会議室デビュー日: 2002/11/09
投稿数: 3
投稿日時: 2002-11-12 23:07
一郎さん Hirashigeさん アドバイスありがとうございます。

>一郎さん

コントロール部は画面からはみ出さす、常に表示される状態にしておくのはご尤もだと思います。
それとはみ出す部分をスクロールという事ですが、ビデオウインドにスクロールバーを付けるのは少しマヌケな感じがしますし、かといって映像部分のみをドラックして移動させるとなるとフォーム自体の移動とどう区別させようか迷います。
それ以前にDirectShowで再生中の映像をどうドラックさせれば良いか、皆目検討が付かなかったので。。。
結果的にフォーム自体大きくなれば問題ないと安易に考えた第です。

>Hirashigeさん

そうなんですよ。。。
MWP7.0では出来なくなっていて自動的に縮小されてしまうので、現在は仕方なく縮小されない6.4を使って表示させているんです。。。
ですが6.4もタイトルバーでの移動しかできないため、映像がはみ出すと下の部分が見えないという問題がありまして。。。
1920x1080という特殊な映像サイズを縮尺せずに表示出来る物を作れないかと取り組んでいます。

この数日色々悩みましたが、一郎さんのアドバイスも考えるとやはりスクロールバーを付けるしかなさそうです。
どうも貴重なお時間を取らせてしまいすみませんでした。
今後ともよろしくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)