子コントロールを隠さずに Windows フォームで半透明のオーバーレイを実現する
下にあるコントロールを隠さずに Windows フォーム上に半透明のオーバーレイを作成するには、上に重ねて 2 番目のフォームを使用する必要があります。このオーバーレイ フォームは、Opacity
プロパティを利用して透明度レベルを制御します。
このオーバーレイを構築するには、プロジェクトに新しいクラスを追加し、Plexiglass
クラスを実装します (以下のコード例を参照)。 このクラスはオーバーレイ フォームを表します。
<code class="language-csharp">public class Plexiglass : Form { // ... Code implementation ... }</code>
メインフォームをパラメータとして渡して、Plexiglass
クラスのインスタンスを作成します。
<code class="language-csharp">var overlay = new Plexiglass(this);</code>
Plexiglass
フォームは、メイン フォームに一致するように位置とサイズを動的に調整し、一貫したカバレッジを確保します。 overlay.Close()
でオーバーレイを閉じると、メイン フォームの完全な表示が復元されます。
よりスムーズな視覚効果を得るには、メイン フォームで Aero トランジションを無効にして、不快なアニメーションを防ぐことを検討してください。
<code class="language-csharp">if (Environment.OSVersion.Version.Major >= 6) { int value = 1; DwmSetWindowAttribute(this.Handle, DWMWA_TRANSITIONS_FORCEDISABLED, ref value, 4); }</code>
このコード スニペット (DwmSetWindowAttribute
が適切に定義されインポートされていることを前提としています) は、Aero トランジションを無効にし、よりシームレスなオーバーレイの外観を実現します。
以上が子コントロールを隠さずに Windows フォーム上に半透明のオーバーレイを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。