【C#】フォームアプリのクライアント領域のみを透明化する方法


この記事はプロモーションを含みます。

C#

C#のWindowsフォームアプリで、タイトルバーや枠線を維持しながらクライアント領域のみを透明化する方法を解説します。

はじめに

Windowsフォームアプリでは、TransparencyKey を使うことでフォーム全体を透明化できます。
しかし、タイトルバーや枠線を残しつつ、クライアント領域のみを透明化するには工夫が必要です。
本記事では、その方法を解説します。
以下は、透明化のイメージです。

ここでの透明化は背景が見えるだけではなく、
後ろにあるアプリをクリックすることも出来ます。
透明というより、穴が空いてるようなイメージです。

クライアント領域(タイトルバーや枠線以外の部分)が透明なので、後ろにあるエディターが見えています。

透明化する方法(ソースコード)

最も簡単な方法は、TransparencyKey を利用することです。
以下のコードでは、フォームの背景色を Color.Lime に設定し、その色を透明化します。
映像編集などでよくあるグリーンバックような感じですね。

下記のコードでは、Color.Lime を使っていますが、Color.Magenta もよく使われます。

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.BackColor = Color.Lime;
            this.TransparencyKey = this.BackColor;
        }
    }
}

シンプルなコードですが、この方法であれば、クライアント領域のみが透明化されるので、タイトルバーにある最大化・最小化ボタンや閉じるボタンをクリックすることが出来ます。

コメント

タイトルとURLをコピーしました