2008-09-27 46 views
0

我試過Visual C#踢code for an alpha-blended form。這工作(只要我刪除TransparencyKey財產);也就是說,我可以使用W3C的PNG alpha test image並查看下面的其他窗口,但是使窗體上的所有控件都不可見。據推測,他們根本不畫,因爲OnPaint被覆蓋。我試過叫超級的OnPaint在alpha混合表單上顯示控件

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) 
    UpdateFormDisplay() 

    MyBase.OnPaint(e) 
End Sub 

,但是這並沒有改變任何東西。 (呼叫MyBase.OnPaint第一不作任何差別無論是。)

不幸的是關於阿爾法混合形式的大多數文章專注於純粹的閃屏沒有任何控制他們 - 但我們需要它首先顯示登入場面板,然後進度條。

順便說一句,控件不需要透明度;只是在外部邊緣,PNG的透明度纔是真正重要的。因此,通過在這一切之上添加另一個表單(兩個表單總是一起移動)來彌補這一點可能就足夠了,但我更喜歡更平滑的解決方案。

回答

1

奇怪,反正,本文將介紹轉化形式與對照阿爾法:

http://www.codeproject.com/KB/miscctrl/AlphaForm.aspx

+0

雖然這個解決方案實際上使用了兩種形式的技巧:「洞」被切割成半透明的形式;那麼下面的表格可以在這些點上進行控制。在任何情況下,儘管形成一個優雅的解決方案,這似乎工作得很好。謝謝! – 2008-09-27 16:04:33

1

嘗試把這個在你的窗體ctor後InitializeComponents();我們可以通過下面的例子來說明如何使用控件樣式來控制樣式,如果您使用的控件的樣式不同,您可以使用不同的樣式。

+0

不有所作爲。樣式被應用(根據`GetStyle`),但我仍然沒有看到任何控件。我也嘗試在`OnPaint`內使用`e.Graphics`來手動繪製東西,例如:e.Graphics.DrawString(「Some text」,New Font(「Arial」,24,FontStyle.Regular),Brushes.Black,CSng (Me.Width/2),CSng(Me.Height/2)),也沒有出現。 – 2008-09-27 11:00:15