在alpha混合表单上显示控件
-
02-07-2019 - |
题
我尝试了Visual C#Kicks 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的透明度才真正重要。因此,通过在此全部添加另一个表单(两个总是串联移动)来伪造这个可能就足够了,但我更喜欢更平滑的解决方案。
解决方案
奇怪,无论如何,这篇文章涵盖了带控件的alpha变换形式:
其他提示
尝试在InitializeComponents();
之后将其放在表单中base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint,true);
不隶属于 StackOverflow