PictureBoxコントロールには、画像を簡単に表示するための方法が用意されています。ですので、画像を表示したい場合はPictureBoxコントロールを使うと便利です。ここではその方法を紹介します。
なお、画像をコントロールに描画する方法は、「コントロールやフォームに画像を表示する」でまとめて説明しています。
指定した画像ファイルをPictureBoxコントロールに表示する最も簡単な方法は、PictureBox.ImageLocationプロパティを使う方法です。ただ画像ファイルのパスをImageLocationプロパティに設定するだけで、画像を表示できます。この方法は、.NET Framework 2.0以上で使用できます。
以下の例では、PictureBoxコントロール(PictureBox1)に画像ファイル(C:\test.bmp)を表示しています。
'PictureBox1に"C:\test.bmp"を表示する
PictureBox1.ImageLocation = "C:\test.bmp"
//PictureBox1に"C:\test.bmp"を表示する
PictureBox1.ImageLocation = @"C:\test.bmp";
補足:以前のMSDNでは、ImageLocationプロパティにファイルのパスを指定する方法として、「file:///[スラッシュを使用したパス]」という形式の使用を推奨していました。そのためここの例でも「C:\test.bmp」ではなく、「file:///C:/test.bmp」としていました。ところが.NET Framework 4.0のMSDNからは一転して「C:\」のようなローカルファイルパスが推奨されるようになりましたので、ここでもそのように変更しました。
URLを指定してWeb上の画像ファイルを表示することもできます。
'PictureBox1にGoogleのアイコンを表示する
PictureBox1.ImageLocation = "http://www.google.com/images/google_favicon_128.png"
//PictureBox1にGoogleのアイコンを表示する
PictureBox1.ImageLocation = "http://www.google.com/images/google_favicon_128.png";
ImageLocationプロパティについてより深く知りたい方は、「PictureBoxを使って、非同期的に画像を読み込み、表示する」をご覧ください。
PictureBox.ImageLocationプロパティを使用できない場合は、PictureBox.Imageプロパティを使う方法が最も簡単です。すでにあるImageオブジェクトをピクチャボックスに表示させる場合も、この方法が最も簡単です。
以下の例では、PictureBoxコントロール(PictureBox1)に画像ファイル(C:\test.bmp)を表示しています。
'PictureBox1に"C:\test.bmp"を表示する
PictureBox1.Image = System.Drawing.Image.FromFile("C:\test.bmp")
//PictureBox1に"C:\test.bmp"を表示する
PictureBox1.Image = System.Drawing.Image.FromFile(@"C:\test.bmp");
注意:この方法で表示した画像ファイルはロックされ、削除できなくなります。この問題の解決法は「表示中の画像ファイルが削除できない問題の解決法」で説明しています。
上の例で画像ファイルの読み込みに使用しているImage.FromFileメソッドについて詳しくは、「画像ファイルを読み込み、Imageオブジェクトを作成する」をご覧ください。
ImageLocationやImageプロパティで画像を表示した時は、画像をピクチャボックスにどのように表示するかをPictureBox.SizeModeプロパティで指定できます。
SizeModeプロパティに指定できるPictureBoxSizeMode列挙体のメンバを以下に示します。デフォルトはNormalです。
PictureBoxSizeModeのメンバ | 説明 | 例 |
---|---|---|
Normal | 画像をPictureBoxの左上に表示する。画像の大きさは、基のまま。 | |
StretchImage | PictureBoxの大きさいっぱいに画像が表示されるように、画像を拡大または縮小して表示する。 | |
AutoSize | PictureBoxの大きさを画像の大きさと同じにして表示する。 | |
CenterImage | 画像をPictureBoxの中央に表示する。画像の大きさは、基のまま。 | |
Zoom | PictureBoxの大きさにあわせて画像を拡大または縮小して表示する。StretchImageと違って、画像のサイズ比率は保持する。画像はPictureBoxの中央に表示される。.NET Framework 2.0以降で有効。 |
次の例では、画像ファイル"C:\test.bmp"がPictureBox1の大きさに合わせて表示されるようにしています。
'画像の大きさをPictureBoxに合わせる PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage '画像を表示する PictureBox1.Image = System.Drawing.Image.FromFile("C:\test.bmp")
//画像の大きさをPictureBoxに合わせる PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; //画像を表示する PictureBox1.Image = System.Drawing.Image.FromFile(@"C:\test.bmp");
ImageLocationやImageプロパティで表示した画像を消すには、ImageプロパティにNothing(C#では、null)を設定します。ImageLocationプロパティもImageプロパティに画像を設定することで画像を表示していますので、このやり方で消去することができます。
以下の例では、Imageプロパティに画像が設定されている時、そのDisposeメソッドを呼び出してリソースを解放しています。このようにImageプロパティに設定されている画像が不要になったら、Disposeメソッドを呼び出してください。
'PictureBox1に表示されている画像を消す If Not (PictureBox1.Image Is Nothing) Then PictureBox1.Image.Dispose() PictureBox1.Image = Nothing End If
//PictureBox1に表示されている画像を消す if (PictureBox1.Image != null) { PictureBox1.Image.Dispose(); PictureBox1.Image = null; }
今までの例ではすでにある画像ファイルを表示してきましたが、プログラムで図形や文字などを描画して画像(Imageオブジェクト)作成し、表示することもできます。この方法を使えば自由度がずっと上がりますが、GDI+の知識が多少必要です。
この方法は、「プログラムで画像を動的に作成する」で詳しく説明します。
BackgroundImageプロパティを使用する方法は、「コントロールやフォームに画像を表示する」に移動しました。