Visualizzazione dei controlli in una forma miscelata alfa
-
02-07-2019 - |
Domanda
Ho provato i Visual C # Kicks codice per un modulo miscelato alfa . Funziona (non appena rimuovo la proprietà TransparencyKey
); cioè posso usare PNG alpha test image del W3C e vedere altre finestre sotto, ma rende invisibili tutti i controlli sul modulo. Presumibilmente, semplicemente non vengono dipinti, poiché OnPaint
viene ignorato. Ho provato a chiamare OnPaint
della superclasse:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
UpdateFormDisplay()
MyBase.OnPaint(e)
End Sub
, ma questo non ha cambiato nulla. (Chiamare MyBase.OnPaint
prima non fa alcuna differenza.)
Sfortunatamente la maggior parte degli articoli sui moduli alfa-blended si concentrano su pure splash screen senza alcun controllo su di essi - ma abbiamo bisogno di un pannello che mostri prima i campi di accesso, quindi una barra di avanzamento.
I controlli, tra l'altro, non hanno bisogno di trasparenza; è solo sui bordi esterni che la trasparenza del PNG conta davvero. Quindi fingere questo aggiungendo un altro modulo sopra tutto (con i due sempre in movimento in tandem) potrebbe essere sufficiente, ma preferirei una soluzione più fluida.
Soluzione
Strano, comunque, questo articolo copre una forma trasformata alfa con controlli:
Altri suggerimenti
Prova a inserirlo nel modulo ctor dopo InitializeComponents ();
base.SetStyle (ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);