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

指定した色を透明色として画像を表示する

注意:画像の表示方法が分からないという方は、まず「コントロールやフォームに画像を表示する」をご覧ください。

指定した色を透明色として画像を表示する方法を紹介します。俗に言う「スプライト処理」ということになりそうです。

これには、画像情報の入ったBitmapオブジェクトのMakeTransparentメソッドを使って指定した色を透明色にしてから、そのBitmapオブジェクトを表示します。

次の例では、画像「C:\test\maketransparent1.png」の黒色を透明色にしてから、画像「C:\test\maketransparent2.png」上に描画し、その結果をピクチャボックス(PictureBox1)に表示しています。

スプライト処理をする画像 + 背景にする画像 合成した結果の画像
maketransparent1.png maketransparent2.png
VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'スプライト処理をする画像を読み込む
Dim bmp As New Bitmap("C:\test\maketransparent1.png")
'黒を透明色にする
bmp.MakeTransparent(Color.Black)

'背景の画像と合成する
'背景となる画像を読み込む
Dim backBmp As New Bitmap("C:\test\maketransparent2.png")
'背景の画像に描画する
Dim g As Graphics = Graphics.FromImage(backBmp)
g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height)
g.Dispose()
bmp.Dispose()

'合成した画像をPictureBox1に表示する
PictureBox1.Image = backBmp
C#
コードを隠すコードを選択
//using System.Drawing;

//スプライト処理をする画像を読み込む
Bitmap bmp = new Bitmap(@"C:\test\maketransparent1.png");
//黒を透明色にする
bmp.MakeTransparent(Color.Black);

//背景の画像と合成する
//背景となる画像を読み込む
Bitmap backBmp = new Bitmap(@"C:\test\maketransparent2.png");
//背景の画像に描画する
Graphics g = Graphics.FromImage(backBmp);
g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
g.Dispose();
bmp.Dispose();

//合成した画像をPictureBox1に表示する
PictureBox1.Image = backBmp;
  • 履歴:
  • 2012/8/1 表示する方法を、PictureBox.Imageプロパティを使った方法に変更。
  • 2013/6/15 例を変更し、実際に画像を載せた。

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

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。