Windowsフォームコントロール(フォームを含む)に画像を表示する方法は多々あります。ここでは主なものを幾つか紹介します。
なおここで紹介している方法は、併用しないことをおすすめします。併用すると、予想外の問題が起こるかもしれません。詳しくは、「PictureBoxのImageプロパティに関するよくある勘違い」で説明します。
PictureBoxコントロールのImageLocationやImageプロパティを使用すると、画像を簡単に表示することができます。とても簡単ですので、GDI+の知識が無くても気軽に使え、ただ画像を表示したいだけなどの単純なケースでの利用に適しています。一方高度なことはできませんし、ゲームなどのように表示を頻繁に更新するケースには向いていません。
この方法は、「PictureBoxコントロールに簡単に画像を表示する」で説明します。
GDI+を直接使用する方法では、コントロールのGraphicsオブジェクトを作成し、そのDrawImageメソッドを呼び出して画像を描画します。Graphicsクラスには、画像だけでなく、様々な図形、線、文字をなどを描画するためのメソッドが用意されていますので、これらを駆使して自分でグラフィックを描画することができます。この方法はPictureBoxコントロールを使った方法より多少面倒ですが、それだけ自由度は高いです。
この方法は、「コントロールのGraphicsオブジェクトを使って、画像を表示する」で説明します。
PictureBoxコントロール以外のコントロールに画像を表示する一番簡単な方法は、多分Control.BackgroundImageプロパティを使う方法です。ただしこのプロパティはあくまでコントロールの背景の画像を表示するためのものですので、正攻法ではありません。「このような方法もある」位に思ってください。
BackgroundImageプロパティで画像を表示した場合、デフォルトでは画像が並べれられて表示されます。この表示方法を変更するには、.NET Framework 2.0以降で使用できるControl.BackgroundImageLayoutプロパティを使用します。
BackgroundImageLayoutプロパティに指定できるImageLayout列挙体のメンバを以下に示します。
ImageLayout列挙体のメンバ | 説明 | 例 |
---|---|---|
Tile | 画像を全体に並べて表示する。 | |
None | 画像をコントロールの左上に表示する。 | |
Center | 画像をコントロールの中央に表示する。 | |
Stretch | 画像をコントロールの大きさに合わせて伸縮して表示する。 | |
Zoom | 画像をコントロールの大きさに合わせて伸縮して表示する。StretchImageと違って、画像のサイズ比率は保持する。位置は、コントロールの中央。 |
Panelコントロール(Panel1)の背景画像に「C:\Blue hills.jpg」を設定して、BackgroundImageLayoutをZoomにする例を以下に示します。なおImage.FromFileメソッドについて詳しく知りたい方は、「画像ファイルを読み込み、Imageオブジェクトを作成する」をご覧ください。
Panel1.BackgroundImageLayout = ImageLayout.Zoom Panel1.BackgroundImage = System.Drawing.Image.FromFile("C:\Blue hills.jpg")
Panel1.BackgroundImageLayout = ImageLayout.Zoom; Panel1.BackgroundImage = System.Drawing.Image.FromFile(@"C:\Blue hills.jpg");