アルファブレンドフォームでのコントロールの表示
-
02-07-2019 - |
質問
Visual C#Kicks アルファブレンド形式のコードを試しました。これは機能します( TransparencyKey
プロパティを削除するとすぐに)。つまり、W3Cの PNGアルファテスト画像を使用して、他のウィンドウを表示できます。下にありますが、フォーム上のすべてのコントロールを非表示にします。おそらく、 OnPaint
がオーバーライドされるため、単純にペイントされません。スーパークラスの OnPaint
を呼び出してみました:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
UpdateFormDisplay()
MyBase.OnPaint(e)
End Sub
、しかしこれは何も変えませんでした。 ( MyBase.OnPaint
first を呼び出しても違いはありません。)
残念ながら、アルファブレンドフォームに関するほとんどの記事は、コントロールのない純粋なスプラッシュスクリーンに焦点を当てています—ただし、最初にサインインフィールドを表示し、次にプログレスバーを表示するパネルが必要です。
コントロールは、ところで、透明性を必要としません。 PNGの透明性が本当に重要なのは外側の端だけです。そのため、このすべての上に別のフォームを追加してこれを偽造する(2つは常にタンデムに移動する)だけで十分かもしれませんが、私はよりスムーズなソリューションを好むでしょう。
解決
奇妙なことに、とにかく、この記事では、コントロール付きのアルファ変換フォームについて説明します。
他のヒント
InitializeComponents()の後にこれをフォームctorに入れてみてください。
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint、true);