Windows フォームでカスタム図形を使用して透明な背景を実現する
SupportsTransparentBackColor
や TransparencyKey
などの標準的な方法は、カスタム形状を使用して透明なフォームを作成する場合に不十分なことがよくあります。 優れたソリューションには、レイヤード ウィンドウ を活用することが含まれます。
階層化ウィンドウ: 優れたアプローチ
レイヤード ウィンドウは、複雑な形状、アニメーション、またはアルファ ブレンディングを含むウィンドウのパフォーマンスと視覚的な向上を大幅に向上させます。 システムは合成と再描画を処理するため、よりスムーズなレンダリングと部分的な透明度が得られます。
Windows フォームでの階層化ウィンドウの実装
PerPixelAlphaForm
クラスは、必要な機能を提供します。 このクラスには WS_EX_LAYERED
拡張スタイルが組み込まれており、フォームの背景としてビットマップを使用できるようになります。
実装手順
カスタム形状のレイヤード ウィンドウを作成するには:
PerPixelAlphaForm
: PerPixelAlphaForm
クラスをプロジェクトに追加します。このクラスは、レイヤー化されたウィンドウを作成するためのコア機能を提供します。PerPixelAlphaForm
から継承してフォームを作成します。これにより、レイヤード ウィンドウのプロパティと SelectBitmap
メソッドへのアクセスが許可されます。SelectBitmap
メソッドを使用して、目的の PNG 画像を渡します。これにより、ビットマップが背景として設定され、不透明度の調整が可能になります。コードの図解
SelectBitmap
メソッドのコア機能を以下に示します。
<code class="language-c#">public void SelectBitmap(Bitmap bitmap, int opacity) { // ... (Code to configure layered window and select bitmap) ... // Update the window with the new bitmap and opacity UpdateLayeredWindow( this.Handle, // Handle to the layered window screenDc, // Handle to the screen DC ref newLocation, // New screen position of the layered window ref newSize, // New size of the layered window memDc, // Handle to the layered window surface DC ref sourceLocation, // Location of the layer in the DC 0, // Color key of the layered window ref blend, // Transparency of the layered window ULW_ALPHA // Use blend as the blend function ); }</code>
実用的なアプリケーション: 成形スプラッシュ スクリーン
整形されたスプラッシュ スクリーンを作成するには:
PerPixelAlphaForm
クラスを組み込みます。SplashScreen
を継承する PerPixelAlphaForm
フォームを開発します。SplashScreen
フォームのコンストラクター内で、選択した PNG 画像を使用して SelectBitmap
を呼び出します。レイヤード ウィンドウを使用すると、透明な背景と滑らかなエッジのカスタム形状を持つフォームをシームレスに作成でき、より視覚的に魅力的なアプリケーションを作成できます。
以上がWindows フォームの滑らかなエッジ形状を持つ透明な背景を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。