PictureBoxコントロールの移動(プロパティ変更)
・まずグラフィックスの座標系について注意事項
・Locationプロパティの変更により、PictureBoxをプログラムで瞬間移動してみよう。
・Width, Heightプロパティにより、PictureBoxの大きさを知ろう。
○グラフィックスにおける座標
- グラフィックスにおける座標は、従来慣れ親しんできた座標系とちょっと違うので、まずはこれを十分に覚えておこう。
- 従来より知っている座標系は、原点Oから右にX軸正方向、上にY軸正方向であった。
- グラフィックスにおける座標系では、
原点Oは左上、ここから右にX軸正方向は変わらないが、原点Oより下向きにY軸正方向となる。

- なお、ある座標は(x, y)のように表記することは従来と同じ。
- 座標系の単位は、VB.Netでは座標の単位は、「ピクセル」(画素)。
○PictureBoxの位置制御;Left, Top プロパティ
- PictureBoxコントロールの位置は、次のように、左側と上側の距離を指定して移動させることができる。
PictureBox1.Left = 200 'PictureBox1の左側をウィンドウの左から200の距離にする
PictureBox1.Top = 100
'PictureBox1の上側をウィンドウの上から100の距離にする
- この2行は順次実行させるので、実際には、PictureBox1がX方向に移動した後、Y方向に移動する。
しかし、コンピュータの実行速度が速いので、一度に移動しているように見える。
- では、PictureBox1を今いる位置から右に100だけ移動させるにはどのようにしたらよいだろうか?
- 右に100というのは、x座標で+100すればよい
- 今いる位置(x座標)は分かる、これに+100すれば右に100だけ動くはず
- PictureBox1.Left = Me.Size.Width : PictureBox1.Top = Me.Size.Height
が実行されると、結果として、一番右の一番下より右下(タイトルバーや枠の太さの関係)に移動する。
実際には画面からははみ出しているので、消えたように見える(ウィンドウの大きさを変えると見える)。
ぴったりと画面の右下に移動するには、以下のPictureBoxの大きさは勿論のこと、タイトルバーや枠の太さを考慮にいれる必要がある(但し本授業ではあまり気にしなくてもよいです)。
○フォームの大きさを知るには;Me.Size.Width, Me.Size.Heightプロパティ
- フォームの大きさ(外側全体)は、Me.Size.Width, Me.Size.Heightで参照することができる。
また「Size」を省略しMe.Width, Me.Heightでもよい。「Me.」も省略することができる。
ここでややこしいのは、このフォームの大きさは、タイトルバー、枠の太さを考慮しないと、
フォームの内側の大きさ、位置がわからないこと。
- フォームの領域内の大きさは、「Me.ClientSize.Width」「Me.ClientSize.Height」で知ることができる。
○PictureBoxの大きさを知るには;Size.Width, Size.Heightプロパティ
- ピクチャーボックスコントロールの大きさ、つまり幅と高さは、それぞれ Size.WidthプロパティとSize.Heightプロパティによって示される。
- 例えばPictureBox1という名前のピクチャーボックスコントロールの、幅は、PictureBox1.Size.Width で参照することができる。
○細かな制御のための参考
- 全体の関係は、→こちらのページ(http://www016.upp.so-net.ne.jp/garger-studio/gameprog/vb5061.html) が参考になると思いますので、ご参照ください。(下記に一部の図を転記しておきます)
- フォームの大きさ(外側全体)は、Me.Size.Width, Me.Size.Heightで参照することができる。
また「Size」を省略しMe.Width, Me.Heightでもよい。「Me.」も省略することができる。
- ここでややこしいのは、細かく制御するためには、タイトルバー、枠の太さを考慮しないといけない。
- バーや枠の太さが分かっている場合は、下図のように考えればよい
- 図ではPictureBox1などの具体例ではなく、PictureBoxと表記しているので注意
- また、
PictureBox1.Left = Me.Size.Width - 4 - 4 - PictureBox1.Size.Width
PictureBox1.Top = Me.Size.Height - 30 - 4 - PictureBox1.Size.Height
の2行は、PictureBox1をはみ出さないようにピッタリ右下に移動することになる。
- ※なお、タイトルバーや枠の太さは微妙に違うようですが、あまり気にしなくても大丈夫です。この辺りの細かい所は気にしないようにしましょう。

・PictureBoxの位置制御;Locationプロパティ(参考)
- PictureBoxコントロールの位置は、前のように、左側と上側の距離をLeft, Topプロパティの二つを別々に指定して別々に移動させていた。
が、Locationプロパティを利用すると、X,Y座標のペアを与えて、バラバラではなく、一気に移動することができる。
- PictureBoxコントロールの位置をX,Y座標共に指定して移動させる方法は次の通り。
PictureBox1.Location = New Point( x, y )
- これは、PictureBoxのLocationプロパティをプログラムで変更していることを意味する。
- 今までとなじみがないのが、右辺で、通常右側は一つの値を書き、左側の変数もしくはプロパティに代入していた。
が、X,Y座標は、ひとまとめにして、New Point( x, y )というように指示しなければいけない。
*困ったことに、PictureBox1.Location.X = 10 などと、X座標やY座標だけを代入することはできない。
[「WR班」プログラミング基礎のTopに戻る]