グラフィックスの基礎(1)
・絵の表示(PictureBoxコントロールとPictureプロパティ)
・絵の入れ替え表示
VBでは自分で書いた絵を色々なところに貼り付け、表示することができます。
ここでは、PictureBoxコントロール(オブジェクト)にImageプロパティを使って表示させてみよう。
絵を描くにはVBとは全く別の「ペイント」ツールなどで書いて、絵のファイルを作っておこう。
○PictureBoxコントロール
- 画面左のツールボックスの右側一番上の風景のような絵が描いてあるアイコン
がPictureBox・コントロールです。
- ラベルなどと同じようにクリックして、フォームの上でドラッグすればよい。後から位置を変えたり大きさを変えたりも同様にできる。
- PictureBoxは、絵を表示したりするのに利用されるコントロールです。
- PictureBoxに絵を表示するには次のような方法を用います。
- プロパティウィンドウにてImageプロパティに対して絵のファイルを指定する。
- 次のようにコードでImageプロパティに絵のファイルを指定する。
- PictureBox1.Image = Image.FromFile("dice1.PNG")
- Image.FromFileの( )内にはファイル名を書く。
- この絵のファイルは、今作成しているプロジェクトフォルダの「bin」フォルダの下に置いておく。
- このようにしてPictureBoxにペイントなどで自分が作成した絵のファイルを表示することができる。
○絵の入れ替え表示
- いくつかの違った絵が貼り付けられているPictureBoxを用意してあったとし、
あるPictureBoxに別のPictureBoxの絵を表示することができる。
- 実際のプログラムは次のようになる。
PictureBox2.Image = Image.FromFile("picture-file1.PNG")
PictureBox3.Image = Image.FromFile("picture-file2.PNG")
PictureBox1.Image = PictureBox2.Image
PictureBox1.Image = PictureBox3.Image
- 上記プログラムの最初2行で、PictureBox1と2に別々の絵のファイルを表示し、次の2行において最初PictureBox1にPictureBox2の絵が表示され、次にPictureBox3の絵が切り替えて表示される。
○適当な絵の表示
- PictureBox1を表示用とし、PictureBox2とPictureBox3に別々の絵を貼り付けておくとする。
プログラムを実行すると、PictureBox1にPictureBox2かPictureBox3のどちらかが表示されるというプログラムを作る。
- さいころを振って偶数(PictureBox2)か奇数(PictureBox3)かの絵を表示(PictureBox1)するものとする
Dim d, x
Randomize()
PictureBox2.Image = Image.FromFile("dice1.PNG")
PictureBox3.Image = Image.FromFile("dice2.PNG")
d = Int(Rnd(1) * 6 + 1)
x = d Mod 2
If x = 0 Then
PictureBox1.Image = PictureBox2.Image
Else
PictureBox1.Image = PictureBox3.Image
End If
- このようにすれば2か3の絵のどちらかが1に表示される。アルゴリズムの概略はさいころを振り偶数だったらPicture
Box
2を、奇数だったらPictureBox
3を表示させている。
- Labelコントロールを2つ用意しておき、
Label1.Text = d
Label2.Text = x
とすると、正しいかどうかが確認できる。
- もちろんもっとたくさんPictureBoxを用意して様々な絵を張っておけば、色々な絵の中のどれかを表示するようにも簡単にできる。
(ちょっとIf文が長くなってしまうけど、とりあえず我慢しましょう;Select文やコントロール配列が使えると簡単にプログラムできるのですが)
- また、見た目の結果的には同じだが、その度にファイルを読み込むということも可能である。
- この場合、ファイル名を変数に入れておけばよい。
Randomize()
pic2 = "dice1.PNG"
pic3 = "dice2.PNG"
d = Int(Rnd(1) * 6 + 1)
x = d Mod 2
Label1.Text = d
Label2.Text = x
If x = 0 Then
PictureBox1.Image = Image.FromFile(pic2)
Else
PictureBox1.Image = Image.FromFile(pic3)
End If
もしくは次のようにしてもよい。
Dim pic, pic2, pic3, d, x
Randomize()
pic2 = "dice1.PNG"
pic3 = "dice2.PNG"
d = Int(Rnd(1) * 6 + 1)
x = d Mod 2
Label1.Text = d
Label2.Text = x
If x = 0 Then
pic = pic2
Else
pic = pic3
End If
PictureBox1.Image = Image.FromFile(pic)
*教科書;
7-6 PictureBoxを利用して画像を表示する(一部)
7-7 画像ファイルを読み込む(一部)
[「C班」プログラミング基礎のTopに戻る]