素人がゲームプログラム作成に挑戦
ゲームを買うお金がないから、ゲームを作るというゲームに挑戦!言語はVisual Basic(VB)をメインにC++、C#、Javaは参考程度
Entries
Formのサイズ
- ジャンル : コンピュータ
- スレッドテーマ : Visual Basic
VBでFormのサイズを操作するにあたって、利用するプロパティがいくつかあります。
例えば、MaximumSizeプロパティ。
これは、フォームの最大サイズを設定するプロパティになります。
例:Form1.MaximumSize=New Size(800,600)
上記のように設定すれば最大ボタンを押してもウィンドウ端をドラッグしても800x600までしか大きくなりません。
また、MinimumSizeプロパティを利用すれば最小サイズを指定することができます。
例:Form1.MinimumSize=New Size(640,480)
ただし、これらのプロパティはフォームのタイトルバーの領域やフォームの周りの枠領域も含んでいますので注意が必要です。
ゲーム等を作成するにあたって、描画領域が640x480必要とするのであれば、MinimumSizeプロパティに640x480と指定するのではなく、タイトルバーや枠領域を加えておかなければなりません。
タイトルバーとかのサイズを調べるのは結構面倒くさいわけですが・・・。
まぁ、おすすめプロパティとしてはClientSizeプロパティでしょうか。
このClientSizeプロパティは描画領域のサイズを指定するプロパティになります。
例:Form1.ClientSize=New Size(640,480)
これにより、タイトルバーのサイズや枠のサイズを考えなくても、描画領域を一発で640x480確保することができます。
ただ、ClientSizeプロパティとMaximumSizeプロパティ、MinimumSizeプロパティを組み合わせるのは結構面倒かと。
ま、ゲームならFormのFormBorderStyleプロパティを固定させて最初から最後まで同じ画面サイズでやれってことですかね。
ちなみに、Formクラスが持つWindowStateプロパティを利用すれば強引にやることはできますが・・・。
例:
これであれば一瞬だけ最大化されますが、800x600を上限値とすることができます。
ちなみに、FormBorderStyleプロパティを固定してフォームのサイズ変更をドラッグでできないようにしたおいたほうがベターです。
ま、こんなやり方でいいのかは疑問。
例えば、MaximumSizeプロパティ。
これは、フォームの最大サイズを設定するプロパティになります。
例:Form1.MaximumSize=New Size(800,600)
上記のように設定すれば最大ボタンを押してもウィンドウ端をドラッグしても800x600までしか大きくなりません。
また、MinimumSizeプロパティを利用すれば最小サイズを指定することができます。
例:Form1.MinimumSize=New Size(640,480)
ただし、これらのプロパティはフォームのタイトルバーの領域やフォームの周りの枠領域も含んでいますので注意が必要です。
ゲーム等を作成するにあたって、描画領域が640x480必要とするのであれば、MinimumSizeプロパティに640x480と指定するのではなく、タイトルバーや枠領域を加えておかなければなりません。
タイトルバーとかのサイズを調べるのは結構面倒くさいわけですが・・・。
まぁ、おすすめプロパティとしてはClientSizeプロパティでしょうか。
このClientSizeプロパティは描画領域のサイズを指定するプロパティになります。
例:Form1.ClientSize=New Size(640,480)
これにより、タイトルバーのサイズや枠のサイズを考えなくても、描画領域を一発で640x480確保することができます。
ただ、ClientSizeプロパティとMaximumSizeプロパティ、MinimumSizeプロパティを組み合わせるのは結構面倒かと。
ま、ゲームならFormのFormBorderStyleプロパティを固定させて最初から最後まで同じ画面サイズでやれってことですかね。
ちなみに、Formクラスが持つWindowStateプロパティを利用すれば強引にやることはできますが・・・。
例:
Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
Static Dim flg as Boolean '大画面と普通画面のフラグ
If Me.WindowState = FormWindowState.Maximized Then '最大化ボタンを押していたら
If flg = False Then '普通画面640x480だったら
Me.ClientSize = New Size(800, 600)
Else '大画面800x600だったら
Me.ClientSize = New Size(640, 480)
End If
flg = Not flg
Me.WindowState = FormWindowState.Normal 'ウィンドウ状態を通常にする
End If
End Sub
Static Dim flg as Boolean '大画面と普通画面のフラグ
If Me.WindowState = FormWindowState.Maximized Then '最大化ボタンを押していたら
If flg = False Then '普通画面640x480だったら
Me.ClientSize = New Size(800, 600)
Else '大画面800x600だったら
Me.ClientSize = New Size(640, 480)
End If
flg = Not flg
Me.WindowState = FormWindowState.Normal 'ウィンドウ状態を通常にする
End If
End Sub
これであれば一瞬だけ最大化されますが、800x600を上限値とすることができます。
ちなみに、FormBorderStyleプロパティを固定してフォームのサイズ変更をドラッグでできないようにしたおいたほうがベターです。
ま、こんなやり方でいいのかは疑問。
0件のコメント
コメントの投稿
0件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/16-1ea5d143
- この記事に対してトラックバックを送信する(FC2ブログユーザー)



