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

PictureBoxコントロールに簡単に画像を表示する

PictureBoxコントロールには、画像を簡単に表示するための方法が用意されています。ですので、画像を表示したい場合はPictureBoxコントロールを使うと便利です。ここではその方法を紹介します。

なお、画像をコントロールに描画する方法は、「コントロールやフォームに画像を表示する」でまとめて説明しています。

PictureBox.ImageLocationプロパティを使用して、指定した画像ファイルを表示する

指定した画像ファイルをPictureBoxコントロールに表示する最も簡単な方法は、PictureBox.ImageLocationプロパティを使う方法です。ただ画像ファイルのパスをImageLocationプロパティに設定するだけで、画像を表示できます。この方法は、.NET Framework 2.0以上で使用できます。

以下の例では、PictureBoxコントロール(PictureBox1)に画像ファイル(C:\test.bmp)を表示しています。

VB.NET
コードを隠すコードを選択
'PictureBox1に"C:\test.bmp"を表示する
PictureBox1.ImageLocation = "C:\test.bmp"
C#
コードを隠すコードを選択
//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上の画像ファイルを表示することもできます。

VB.NET
コードを隠すコードを選択
'PictureBox1にGoogleのアイコンを表示する
PictureBox1.ImageLocation = "http://www.google.com/images/google_favicon_128.png"
C#
コードを隠すコードを選択
//PictureBox1にGoogleのアイコンを表示する
PictureBox1.ImageLocation = "http://www.google.com/images/google_favicon_128.png";

ImageLocationプロパティについてより深く知りたい方は、「PictureBoxを使って、非同期的に画像を読み込み、表示する」をご覧ください。

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

PictureBox.ImageLocationプロパティを使用できない場合は、PictureBox.Imageプロパティを使う方法が最も簡単です。すでにあるImageオブジェクトをピクチャボックスに表示させる場合も、この方法が最も簡単です。

以下の例では、PictureBoxコントロール(PictureBox1)に画像ファイル(C:\test.bmp)を表示しています。

VB.NET
コードを隠すコードを選択
'PictureBox1に"C:\test.bmp"を表示する
PictureBox1.Image = System.Drawing.Image.FromFile("C:\test.bmp")
C#
コードを隠すコードを選択
//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の左上に表示する。画像の大きさは、基のまま。 Normal
StretchImage PictureBoxの大きさいっぱいに画像が表示されるように、画像を拡大または縮小して表示する。 StretchImage
AutoSize PictureBoxの大きさを画像の大きさと同じにして表示する。 AutoSize
CenterImage 画像をPictureBoxの中央に表示する。画像の大きさは、基のまま。 CenterImage
Zoom PictureBoxの大きさにあわせて画像を拡大または縮小して表示する。StretchImageと違って、画像のサイズ比率は保持する。画像はPictureBoxの中央に表示される。.NET Framework 2.0以降で有効。 Zoom

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

VB.NET
コードを隠すコードを選択
'画像の大きさをPictureBoxに合わせる
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
'画像を表示する
PictureBox1.Image = System.Drawing.Image.FromFile("C:\test.bmp")
C#
コードを隠すコードを選択
//画像の大きさを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メソッドを呼び出してください。

VB.NET
コードを隠すコードを選択
'PictureBox1に表示されている画像を消す
If Not (PictureBox1.Image Is Nothing) Then
    PictureBox1.Image.Dispose()
    PictureBox1.Image = Nothing
End If
C#
コードを隠すコードを選択
//PictureBox1に表示されている画像を消す
if (PictureBox1.Image != null) 
{
    PictureBox1.Image.Dispose();
    PictureBox1.Image = null;
}

画像をプログラムで動的に作成して表示する

今までの例ではすでにある画像ファイルを表示してきましたが、プログラムで図形や文字などを描画して画像(Imageオブジェクト)作成し、表示することもできます。この方法を使えば自由度がずっと上がりますが、GDI+の知識が多少必要です。

この方法は、「プログラムで画像を動的に作成する」で詳しく説明します。

BackgroundImageプロパティを使用する

BackgroundImageプロパティを使用する方法は、「コントロールやフォームに画像を表示する」に移動しました。

  • 履歴:
  • 2007/1/15 「.NET Framework 2.0以降で、指定したURLの画像を表示する」と「BackgroundImageプロパティを使用する」を追加。
  • 2012/7/26 タイトルを「ピクチャボックスに簡単に画像を表示する」から変更。「BackgroundImageプロパティを使用する」を「コントロールやフォームに画像を表示する」に移動。「プログラムで動的に作成した画像を表示する」を追加。その他大幅な書きなおし。

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

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。