Visualización de controles en una forma alfa-mezclada
-
02-07-2019 - |
Pregunta
Probé el código de C # Kicks para un formulario de mezcla alfa . Esto funciona (tan pronto como elimine la propiedad TransparencyKey
); es decir, puedo usar la imagen de prueba alfa de PNG del W3C y ver otras ventanas debajo, pero hace que todos los controles de la forma sean invisibles. Presumiblemente, simplemente no están pintados, ya que OnPaint
está anulado. Intenté llamar al OnPaint
de la superclase:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
UpdateFormDisplay()
MyBase.OnPaint(e)
End Sub
, pero esto no cambió nada. (Llamar a MyBase.OnPaint
primero tampoco hace ninguna diferencia).
Desafortunadamente, la mayoría de los artículos sobre formas con mezcla alfa se centran en pantallas de inicio puro sin ningún control, pero necesitamos un panel que primero muestre los campos de inicio de sesión y luego una barra de progreso.
Los controles, por cierto, no necesitan transparencia; Es solo en los bordes exteriores que la transparencia de PNG realmente importa. Así que fingir esto agregando otra forma además de todo esto (con los dos moviéndose siempre en tándem) podría ser suficiente, pero preferiría una solución más suave.
Solución
Extraño, de todos modos, este artículo cubre una forma alfa transformada con controles:
Otros consejos
Intente poner esto en su formulario ctor después de InitializeComponents ();
base.SetStyle (ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);