【C#/WinForms】フォーム上の特定の色を透明にする方法

この記事は約2分で読めます。

フォーム全体を透明にするには Opacity プロパティでできることは知っていたのですが、例えばフォームに配置したコントロール(自作エディタ)だけを透明にする方法は、以前に色々試してみたのですが結局できませんでした。

ディスプレイが小さい場合なんかだと、背景を透明にして資料を見ながら作業できるのでできれば実装したかったんですよね。

本日なにげにフォームのプロパティを見てたら普通に透明色のプロパティが存在していました。

透明にする色の設定

フォームの TransparencyKey プロパティに透明にする色を設定すると、フォームに配置しているコントロールも含めその色は全て透明になります。

設定例

例えば、フォームに配置したコントロールの背景色を赤、TransparencyKey プロパティも赤色を設定すると赤色部分が透明になります。

例えば動画見ながらエディタで文書作成とかもでできちゃいますね。

現状の問題点

いい感じなんですが、設定例のイメージのように若干文字に赤色が入ってしまっています。フォントはメイリオです。MS ゴシック場合だと、ある一定のサイズまでは赤色無しで綺麗に描画されました。

多分、赤色の背景に文字を描画して、その後に赤色を透明するときに一部残ってしまうんでしょうね。

おわりに

あと、条件はわからないのですが、透過色に白や黒を設定すると私の環境では、フォームの下のウィンドウが操作できました。逆に赤にすると透明になっているエディタにフォーカスがあたります。

コメント

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