DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

ピクチャボックスに簡単に画像を表示する

PictureBox.Imageプロパティを使用する

ピクチャボックスに画像を表示させる場合、一番簡単な方法は、PictureBoxのImageプロパティに表示するイメージを指定することです。次の例ではこの方法により、ピクチャボックスPictureBox1に画像ファイル"C:\Blue hills.jpg"を表示させています。

[VB.NET]
PictureBox1.Image = Image.FromFile("C:\Blue hills.jpg")
[C#]
PictureBox1.Image = Image.FromFile(@"C:\Blue hills.jpg");

また、このようにして表示した画像を消去するには、次のようにします。

[VB.NET]
If Not (PictureBox1.Image Is Nothing) Then
    PictureBox1.Image.Dispose()
    PictureBox1.Image = Nothing
End If
[C#]
if (PictureBox1.Image != null) 
{
    PictureBox1.Image.Dispose();
    PictureBox1.Image = null;
}

なお、ピクチャボックスに画像を描画する最も一般的な方法は、「画像ファイルを表示する」で紹介します。

注意:この方法で表示した画像ファイルはロックされ、削除できなくなります。この問題の解決法は「表示中の画像ファイルが削除できない問題の解決法」をご覧ください。

画像の配置方法を指定する

PictureBox.Imageプロパティで表示する画像の配置方法を指定するには、PictureBox.SizeModeプロパティを使います。SizeModeプロパティに指定できるPictureBoxSizeMode構造体のメンバを以下に示します。何も指定しなければNormalとなります。

PictureBoxSizeModeのメンバ 説明
Normal 画像をPictureBoxの左上に表示する。画像の大きさは、基のまま。
StretchImage PictureBoxの大きさいっぱいに画像が表示されるように、画像を拡大または縮小して表示する。
AutoSize PictureBoxの大きさを画像の大きさと同じにして表示する。
CenterImage 画像をPictureBoxの中央に表示する。画像の大きさは、基のまま。
Zoom PictureBoxの大きさにあわせて画像を拡大または縮小して表示する。StretchImageと違って、画像のサイズ比率は保持する。画像はPictureBoxの中央に表示される。.NET Framework 2.0以降で有効。

次の例では、画像ファイル"C:\Blue hills.jpg"をPictureBox1の大きさに合わせて表示させるようにしています。

[VB.NET]
'画像の大きさをPictureBoxに合わせる
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
'画像を表示する
PictureBox1.Image = Image.FromFile("C:\Blue hills.jpg")
[C#]
//画像の大きさをPictureBoxに合わせる
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
//画像を表示する
PictureBox1.Image = Image.FromFile(@"C:\Blue hills.jpg");

.NET Framework 2.0以降で、指定した場所の画像を表示する

.NET Framework 2.0からは、PictureBox.ImageLocationプロパティを使って、指定したURIの画像をPictureBoxに表示することができます。この方がImageプロパティによる方法よりも簡単です。

ImageLocationプロパティで読み込んだ画像は、Imageプロパティに設定されます。

以下に画像ファイル"C:\test.bmp"を表示する例を示します。ImageLocationに"C:\test.bmp"のようなパスを指定しても大丈夫ですが、下の例のように、"file:///"とする方法が推奨されています。

[VB.NET]
'PictureBox1に"C:\test.bmp"を表示する
PictureBox1.ImageLocation = "file:///C:/test.bmp"
[C#]
//PictureBox1に"C:\test.bmp"を表示する
PictureBox1.ImageLocation = "file:///C:/test.bmp";

ImageLocationプロパティについてさらに詳しくは、「ピクチャボックスで非同期的に画像を読み込み、表示する」で説明します。

BackgroundImageプロパティを使用する

画像を表示する目的で使用するのは適当ではありませんが、Control.BackgroundImageプロパティにより、画像を表示することもできます。この場合は通常、画像が並べれられ表示されます。

.NET Framework 2.0からはControl.BackgroundImageLayoutプロパティにより、背景画像の配置法を変更することができます。BackgroundImageLayoutプロパティに指定できるImageLayout列挙体のメンバを以下に示します。

ImageLayout列挙体のメンバ 説明
Tile 画像を全体に並べて表示する。
None 画像をコントロールの左上に表示する。
Center 画像をコントロールの中央に表示する。
Stretch 画像をコントロールの大きさに合わせて伸縮して表示する。
Zoom 画像をコントロールの大きさに合わせて伸縮して表示する。StretchImageと違って、画像のサイズ比率は保持する。位置は、コントロールの中央。

BackgroundImageLayoutをZoomにして背景画像を設定する例を以下に示します。

[VB.NET]
PictureBox1.BackgroundImageLayout = ImageLayout.Zoom
PictureBox1.BackgroundImage = Image.FromFile("C:\Blue hills.jpg")
[C#]
PictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
PictureBox1.BackgroundImage = Image.FromFile(@"C:\Blue hills.jpg");
  • 履歴:
  • 2007/1/15 「.NET Framework 2.0以降で、指定したURLの画像を表示する」と「BackgroundImageプロパティを使用する」を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。