以Alpha混合形式显示控件

时间:2020-03-06 14:49:18  来源:igfitidea点击:

我尝试了Visual CKicks代码的alpha混合形式。这有效(一旦我删除了" TransparencyKey"属性);也就是说,我可以使用W3C的PNG alpha测试图像,并在下面看到其他窗口,但是可以使窗体上的所有控件不可见。据推测,由于" OnPaint"已被覆盖,因此它们根本不会被绘制。我尝试调用超类的OnPaint

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

    MyBase.OnPaint(e)
End Sub

,但这并没有改变任何东西。 (首先调用MyBase.OnPaint也没有任何区别。)

不幸的是,大多数有关alpha混合表单的文章都集中在纯启动屏幕上,没有任何控件,但是我们需要一个面板来首先显示登录字段,然后显示进度栏。

顺便说一句,这些控件不需要透明。 PNG的透明度仅在外边缘才真正重要。因此,通过在所有表单之上添加另一种表单(使两者始终同时移动)来伪造此表就足够了,但是我希望有一个更平滑的解决方案。

解决方案

尝试将其放在InitializeComponents()之后的表单ctor中;

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

无论如何,奇怪的是,本文介绍了带有控件的alpha转换形式:

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