経緯
かなり前にVPetというwindowsの画面上でペットを愛でることができる、というゲームが出ました。WindowsFormアプリケーションでも似たようなことができないかなーと背景透過してみました。
実装
早速やっていきましょう
ボタンを配置
まずはWindowsフォームアプリケーションで何か配置します。今回は例としてボタンを配置します。
コード
フォームアプリケーションで背景透過を実装する方法は驚くほど簡単でした。
this.TransparencyKey = this.BackColor;
を追加するだけでできます。また、this.TransparencyKeyに別のカラーコードを設定することでどんな色でも設定できます。
using System;
using System.Windows.Forms;
namespace overlay
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//背景色を透過色に指定
this.TransparencyKey = this.BackColor;
}
}
}
実行結果
余談
背景は透過されましたが、アプリケーションバーや枠が残っていて気になるという方もいると思います。その際は次のコードを追加することで完全なオーバーレイUIを作成することができます。
this.FormBorderStyle = FormBorderStyle.None;
using System;
using System.Windows.Forms;
namespace overlay
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//背景色を透過色に指定
this.TransparencyKey = this.BackColor;
//ここ!ボーダーレスウィンドウに設定
this.FormBorderStyle = FormBorderStyle.None;
}
}
}
実行結果
画像のように、完全に画面に浮いたUIを作成することができます。
感想
この透過機能を使用したFormアプリケーションはなかなか見かけないので色々応用できそうに思います。今後何か透過を利用した仕組みが思いついたら、また記事にしようと思います。
参考文献


