(C#)フォームを背景色で透過し、透過PNGを表示する

WMPLibを使ってシコシコとプログラム書いてるわけですが。

再生中の動画の上に、任意のタイミングで透過PNGを重ねたいという要望が出まして。

「透過PNGを表示したFormのOpacity下げたらいけるんじゃね?」と軽く考えていたらハマったのでメモ。

「透過PNGを表示したFormのOpacity下げる」と、透過PNGの透過していない部分まで透けちゃうというお粗末なことになりやした。

以下、解決したコード。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace Hoge {
    public partial class SukesukeForm : Form {
        public SukesukeForm() {
            InitializeComponent();
        }

        private void
SukesukeForm_Load(object sender, EventArgs e) {
            //背景画像設定
            Bitmap img = new Bitmap("../../img/sukesuke.png");
            img.MakeTransparent();
            this.BackgroundImage = img;

            //フォームを背景色で透過させる
            this.TransparencyKey = BackColor;
            
        }
    }
}

このフォームを動画を再生しているフォームの上に重ねることで達成しました。

めでたしめでたし。