Controllo alfa miscelato sulla finestra a strati in c #
-
14-11-2019 - |
Domanda
Ho una forma stratificata con il set di stile esteso WS_EX_Layered. Ho creato un controllo "Modifica" per figlio utilizzando la funzione API di CreateWinDowex (...); Il controllo è lì ma non viene dipinto e nulla appare sulla forma.
So che quando si utilizza WS_EX_Layered Style su una finestra in alto il messaggio WM_Paint non viene inviato più e né i controlli per bambini lo riceveranno in modo che sia perché non appare.
Si prega di tenere conto del fatto che l'opacità del modulo è impostata su 255 e lo sfondo è dipinto con un'immagine trasparente utilizzando API UpdateLayeredWindow (...).
Quando mouse il mouse sopra il controllo di modifica, il cursore del testo viene visualizzato e posso copiare il testo al suo interno.
Immagino che il problema che devo affrontare sia in qualche modo il controllo per accettare la vernice utente.
Ho provato a dipingere il controllo con la stessa tecnica del modulo, e per questo ho creato un DC compatibile dal modulo ma non so se questo è persino possibile, il mio controllo non è ancora dipinto.
Dovrebbe funzionare se invii il wm_printclient per quel controllo? In tal caso, la DC dovrebbe essere la forma genitore stratificata? Ho anche provato questo ma non potevo farlo funzionare.
Forma normale: http://img580.imageshack.us/i/formy.png/
Modulo a strati: http://img6.imageshack.us/i/layeredform.png/
La mia domanda è come faccio a fare il mio controllo di modifica accetta la vernice alfa-miste-da usare? Come dipingere un controllo alfa-miste sul modulo a strati?
Soluzione
Alla fine ho trovato un modo per farlo,
Quello che dovevo fare era ottenere l'immagine bitmap di ogni controllo e disegnarlo sullo sfondo della forma così ... Quando ho applicato UpdateLayeredWindow per il modulo, il modulo bitmap conteneva tutti i comandi,
Non so ancora se questa è una migliore pratica però
Il metodo funziona bene, ma devo perfezionarlo e aggiungere più interazione + comandi alpha blended .. D'altra parte la funzionalità della mano è lì