DOBON.NET

コントロールやフォームに画像を表示する

Windowsフォームコントロール(フォームを含む)に画像を表示する方法は多々あります。ここでは主なものを幾つか紹介します。

なおここで紹介している方法は、併用しないことをおすすめします。併用すると、予想外の問題が起こるかもしれません。詳しくは、「PictureBoxのImageプロパティに関するよくある勘違い」で説明します。

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

PictureBoxコントロールのImageLocationやImageプロパティを使用すると、画像を簡単に表示することができます。とても簡単ですので、GDI+の知識が無くても気軽に使え、ただ画像を表示したいだけなどの単純なケースでの利用に適しています。一方高度なことはできませんし、ゲームなどのように表示を頻繁に更新するケースには向いていません。

この方法は、「PictureBoxコントロールに簡単に画像を表示する」で説明します。

コントロールのGraphicsオブジェクトを作成し、描画する

GDI+を直接使用する方法では、コントロールのGraphicsオブジェクトを作成し、そのDrawImageメソッドを呼び出して画像を描画します。Graphicsクラスには、画像だけでなく、様々な図形、線、文字をなどを描画するためのメソッドが用意されていますので、これらを駆使して自分でグラフィックを描画することができます。この方法はPictureBoxコントロールを使った方法より多少面倒ですが、それだけ自由度は高いです。

この方法は、「コントロールのGraphicsオブジェクトを使って、画像を表示する」で説明します。

BackgroundImageプロパティを使用する

PictureBoxコントロール以外のコントロールに画像を表示する一番簡単な方法は、多分Control.BackgroundImageプロパティを使う方法です。ただしこのプロパティはあくまでコントロールの背景の画像を表示するためのものですので、正攻法ではありません。「このような方法もある」位に思ってください。

BackgroundImageプロパティで画像を表示した場合、デフォルトでは画像が並べれられて表示されます。この表示方法を変更するには、.NET Framework 2.0以降で使用できるControl.BackgroundImageLayoutプロパティを使用します。

BackgroundImageLayoutプロパティに指定できるImageLayout列挙体のメンバを以下に示します。

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

Panelコントロール(Panel1)の背景画像に「C:\Blue hills.jpg」を設定して、BackgroundImageLayoutをZoomにする例を以下に示します。なおImage.FromFileメソッドについて詳しく知りたい方は、「画像ファイルを読み込み、Imageオブジェクトを作成する」をご覧ください。

VB.NET
コードを隠すコードを選択
Panel1.BackgroundImageLayout = ImageLayout.Zoom
Panel1.BackgroundImage = System.Drawing.Image.FromFile("C:\Blue hills.jpg")
C#
コードを隠すコードを選択
Panel1.BackgroundImageLayout = ImageLayout.Zoom;
Panel1.BackgroundImage = System.Drawing.Image.FromFile(@"C:\Blue hills.jpg");

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

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。