Web検索はbingがおすすめ!

透過色を指定してビットマップ画像を画面に描画する - C#

透過色を指定してビットマップ画像を画面に描画するコードを紹介します。

概要

こちらの記事では、フォームに画像を描画する方法を紹介しました。
実行結果を見ると画像の背景部分も含めて描画されています。この記事では背景部分を透過して画像を描画する方法を紹介します。

プログラム例

コード

以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.IO;

namespace MaskDrawImage
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
      Assembly assembly = Assembly.GetExecutingAssembly();
      Stream stream = assembly.GetManifestResourceStream("MaskDrawImage.ball.bmp");
      Bitmap bmp = new Bitmap(stream);

      bmp.SetResolution(e.Graphics.DpiX, e.Graphics.DpiY);

      Color keyColor = Color.FromArgb(255, 255, 255);
      bmp.MakeTransparent(keyColor);
      e.Graphics.DrawImage(bmp, new Point(40, 80));
    }
  }
}

解説

リソースからの画像読み込み、画像のピクセル解像度の設定はこちらの記事を参照してください。

Color keyColor = Color.FromArgb(255, 255, 255);
bmp.MakeTransparent(keyColor);
上記コードにより画像の白いピクセルを透過ピクセルとして扱います。Color.FromArgbを用い透過色をkeyColor変数に設定します。その後、MakeTransparent()メソッドにkeyColorを引数として与えkeyColorの色を持つピクセルを透過ピクセルに設定します。

実行結果

アプリケーションを実行すると下図の画面が表示されます。画像の背景部分を透過して描画できました。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-01-08
作成日: 2012-02-03
iPentec all rights reserverd.