2009-03-06 11 views
5

Se si aggiunge un'immagine PNG a un controllo ImageList e si utilizza ImageList con ListView o TreeView in un'applicazione Windows Form (.Net 2.), le icone visualizzate in ListView presentano una "alone" blu attorno ad esse.Soluzione alternativa per il bug della trasparenza di ImageList?

Esempio:

alt text http://deeperdesign.wordpress.com/files/2009/03/blue-halo.png

Qualcuno sa un lavoro intorno che permette di aggiungere PNG a 32 bit con un canale alfa a un ImageList e mantenere i pixel trasparenti e di evitare l'effetto alone/bug?

Grazie.

risposta

10

Non penso che questo sia un bug. Dovresti avere l'intensità del colore di ImageList impostata su 32-bit e devi usare gli stili visivi.

Se l'applicazione ha abilitato gli stili di visualizzazione, WinForms utilizza la versione 6.0 dei controlli comuni di Windows, che supporta la trasparenza alfa. Altrimenti utilizzerà la versione precedente che non supporta la trasparenza alfa e restituisce erroneamente immagini ARGB con un alone blu.

Se avete bisogno di una soluzione, si potrebbe provare a creare nuove immagini bitmap della stessa dimensione, riempiendole con il BackColor del ListView, la creazione di un oggetto Graphics sul bitmap e disegnare l'immagine ARGB sul bitmap. Quindi è possibile inserire questi bitmap pre-blened in ImageList. Se lo fai, tuttavia, la selezione sembrerà divertente nell'icona in ListView.

Un altro work-around sarebbe quello di accedere direttamente ai dati bitmap (usando LockBits()) e mescolare manualmente tutti i pixel semitrasparenti, il che farà sì che le immagini vengano renderizzate correttamente e sembrino più o meno come dovrebbero quando selezionato .

Problemi correlati