2011-12-16 22 views
0

特定のイベントが発生したときにフォーム全体に半透明のレイヤーを描画しようとしています。この半透明レイヤーの前にプロンプ​​トが表示されます(Windows Vista/7のUAC対応のエフェクトに似ています)フォーム内の半透明の子フォーム(またはその他の半透明レイヤー)

最初はカスタムの半透明パネルを使用しようとしていましたが、これはまったく動作していないようです。私はフォームの中の不透明度プロパティを使ってフォーム内で子フォームを使用しようとしています。ただし、この半透明フォームがメインフォームのコントロールに追加されて表示されると、透明性が失われます。

私は、半透明レイヤーが実際にメインフォーム内のコンポーネントではなく、透明性がその時働いていますが、明らかにこれは理想的ではなく、さまざまな原因を引き起こす可能性があります問題をさらに深刻化させる。

さらに、フォームを格納したいフォームは、複数のフォームのタブコントロール内に含まれているため、Mdi Parentにはできません(これが助けになる場合)。

基本的に、私のフォームの残りの部分に半透明の「暗い」レイヤーを表示するのに役立つものは理想的です。私はそれがどのように達成されているか心配していません。

ありがとうございました。

+0

あなたは非理想的な解決法を解決しなければなりません。トップレベルのウィンドウだけが半透明になります。 –

+0

半透明のオーバーレイを作成する方法はありますか? – Sam

答えて

0

あなたは半透明の背景とボーダーレスフォームを作成することができます。Form2ののペイントイベントで

Private Sub button1_Click(sender As Object, e As EventArgs) 
    Dim f As New Form2() 
    f.WindowState = FormWindowState.Normal 
    f.StartPosition = FormStartPosition.Manual 
    f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None 
    f.TransparencyKey = Color.Magenta 
    f.Bounds = Me.Bounds 
    f.ShowDialog() 
End Sub 

、あなたはハッチブラシを使用して半透明にそれを設定することができます。

Private Sub Form2_Paint(sender As Object, e As PaintEventArgs) 
    Dim hb = New HatchBrush(HatchStyle.Percent50, Me.TransparencyKey) 
    e.Graphics.FillRectangle(hb, Me.DisplayRectangle) 
End Sub 
関連する問題