背景が透明なフォームを作成する(フォームの透過色を設定する) [C#]

Windowsフォームアプリケーションのフォームでは、フォームを透明化して背景を表示することができます。
System.Windows.Forms名前空間にあるFormクラスのTransparencyKeyプロパティを使用して、透明にする色(Color)を選択し、フォームの背景色などにTransparencyKeyプロパティに指定した色を設定することで、その色の部分が透けて背後の画面がフォーム内に見えるようになります。TransparencyKeyプロパティには、System.Drawing名前空間にあるColor構造体で色を指定します。

今回はVisual StudioでC#のプロジェクトを作成して、FormクラスのTransparencyKeyプロパティを使って透過色を指定し、フォームを透明にする方法を紹介します。

Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。

Windowsフォームアプリケーションのプロジェクト(ソリューション)を作成する。[C#]
Visual StudioでC#のWindowsフォームアプリケーションのプロジェクト(ソリューション)を作成する方法を記載します。 ...

透過色を指定する

フォームの透過色を指定するTransparencyKeyプロパティは、フォームデザイナーのプロパティグリッドと、コードの両方で設定することができます。
す。

デザイナーのプロパティグリッドで設定する

フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。

フォームデザイナーのプロパティグリッド
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。

デザイナーのプロパティグリッドにあるTransparencyKeyプロパティのテキストボックスの横にあるボタンをクリックします。

フォームデザイナーのTransparencyKeyプロパティのテキストボックスのボタン

ボタンをクリックすると色を選択するボックスが表示されます。
色選択ボックスには「カスタム」「Web」「システム」の3つのタブがあり、色の選択方法を選ぶことができます。

フォームデザイナーのTransparencyKeyプロパティ

「カスタム」タブでは色を選択するグリッドが表示されますので、目的の色のセルをクリックします。

フォームデザイナーのTransparencyKeyプロパティのカスタムタブ

「カスタム」タブではグリッドの下部に2行ある空白のセルを右クリックすることで、色を選択するダイアログボックスが表示されますので、任意の色を指定することもできます。

フォームデザイナーのTransparencyKeyプロパティの色選択ダイアログボックス

「Web」タブではWebカラーの名前が一覧で表示されますので、リストから目的の色を選択します。

フォームデザイナーのTransparencyKeyプロパティのWebタブ

「システム」タブではシステムカラーの名前が一覧で表示されますので、Webと同様に目的の色をリストから選択します。

フォームデザイナーのTransparencyKeyプロパティのシステムタブ

コードで設定する

コードエディタを表示して以下のコードを入力します。

上記のコードではColor構造体のRedをTransparencyKeyプロパティに指定して、赤を透過色にしています。
この状態でフォームの背景色に赤(Color.Red)を指定したり、フォームに配置したコントロールの背景色を赤(Color.Red)に指定することで、フォームの背後が透けて見えます。

フォームデザイン

フォームの透過色を設定するサンプルフォームデザイン
フォームにはテキストボックスとボタンとチェックボックスを配置しています。テキストボックスとボタンの背景色(BackColor)をColor.Redに設定し、チェックボックスの前景色(ForeColor)をColor.Redに設定しています。

フォームを表示

フォームの透過色を設定する 赤を透明に指定

フォームの背景色(Form.BackColor)をTransparencyKeyプロパティに指定することで、フォーム全体を透過することもできます。

フォームを表示

フォームの透過色を設定する フォームの背景色を透明に指定

サンプルプログラム

ここではフォームの背景画像を指定して、フォームの背景色を透過色に指定することで、背景画像のみが表示されるフォームのサンプルプログラムを作成します。
フォームの背景画像に設定するイメージは以下の画像を使用します。

フォームの透過色を設定するサンプルフォームの背景画像のイメージ

ユーザーインターフェース

フォームには、コントロールは何も配置しません。フォームのボーダースタイルをなし(FormBorderStyle: None)に設定し、背景画像をバックグラウンドイメージ(BackgroundImage)に設定します。

フォームの透過色を設定するサンプルフォームデザイン

ソースコード

フォームのロードイベントで透過色を設定します。

プログラムの実行

プロジェクトをビルドして実行(デバッグ)すると、フォームが表示されます。

フォームの透過色を設定するサンプルプログラムを実行

まるで満月のようです。