Windows フォームでの半透明のオーバーレイの作成
この記事では、子コントロールの表示や機能を妨げることなく、Windows フォームに半透明の画像をオーバーレイする方法について説明します。 重要なのは、上部に配置された別の透明なフォームを使用することです。
これはステップバイステップのガイドです:
カスタム フォーム クラスの開発:
オーバーレイを管理するための新しいクラス (例: OverlayForm
) を作成します。 このクラスは System.Windows.Forms.Form
から継承します。 必要な using
ステートメントを含めます:
<code class="language-csharp">using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices;</code>
オーバーレイ フォームを構成します:
オーバーレイするフォーム (例: OverlayForm
) を指定して、mainForm
クラスをインスタンス化します。 そのプロパティを次のように設定します:
<code class="language-csharp">OverlayForm overlay = new OverlayForm(mainForm);</code>
BackColor
: 希望の色に設定します (例: Color.DarkGray
)。Opacity
: 透明度を制御するように調整します (例: 0.30
で不透明度 30%)。FormBorderStyle
: 境界線を削除するには、FormBorderStyle.None
に設定します。ControlBox
: コントロールボックスを非表示にするには、false
に設定します。ShowInTaskbar
: タスクバーに表示されないようにするには、false
に設定します。StartPosition
: 正確な位置決めを行うには、FormStartPosition.Manual
に設定します。同期の維持:
基礎となるフォーム (LocationChanged
) の ClientSizeChanged
および mainForm
イベントを処理して、オーバーレイ フォームの位置とサイズが動的に調整されるようにします。
エアロトランジションを無効にする (Vista 以降):
Aero ガラス効果による視覚的な不具合を防ぐには、DwmSetWindowAttribute
を使用して効果を無効にします (System.Runtime.InteropServices
が必要です)。
終了イベントの管理:
オーバーレイ フォームが閉じたら、基になるフォームで変更された設定を復元し、必要に応じて Aero トランジションを再度有効にします。
オーバーレイのアクティブ化を防止:
オーバーレイ フォームの OnActivated
イベントをオーバーライドして、フォーカスを取得しないようにし、代わりに基になるフォームにフォーカスをリダイレクトします。
実装:
overlay.Show()
メソッドと overlay.Close()
メソッドを使用して、必要に応じてオーバーレイを表示または非表示にします。
このメソッドは、基礎となるフォームの子コントロールの使いやすさを妨げることなく、半透明のオーバーレイを提供します。 堅牢なソリューションを実現するために、潜在的な例外やエッジ ケースに対処することを忘れないでください。
以上がチャイルド コントロールの可視性を維持しながら Windows フォームに半透明の画像をオーバーレイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。