在alpha混合表单上显示控件

时间:2008-09-27 09:50:11

标签: winforms .net-2.0 alphablending

我尝试了Visual C#Kicks code for an alpha-blended form。这有效(一旦删除TransparencyKey属性);也就是说,我可以使用W3C的PNG alpha test image并查看下面的其他窗口,但会使窗体上的所有控件都不可见。据推测,它们根本没有被绘制,因为OnPaint被覆盖了。我试着调用超类的OnPaint

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

    MyBase.OnPaint(e)
End Sub

,但这并没有改变任何事情。 (先调用MyBase.OnPaint 也不会产生任何影响。)

不幸的是,大多数关于alpha混合形式的文章都专注于纯粹的启动画面而没有任何控制 - 但我们需要一个首先显示登录字段的面板,然后是一个进度条。

顺便说一句,控件不需要透明度;只有在外边缘,PNG的透明度才真正重要。因此,通过在此全部添加另一个表单(两个总是串联移动)来伪造这个可能就足够了,但我更喜欢更平滑的解决方案。

2 个答案:

答案 0 :(得分:1)

尝试在InitializeComponents();

之后将其放在表单中

base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint,true);

答案 1 :(得分:1)

奇怪,无论如何,这篇文章涵盖了带控件的alpha变换形式:

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