2012-04-29 17 views
6

sto usando ImageList per TreeView e ListView. Per prima cosa ho impostato la qualità dell'immagine su 32 bit e poi ho aggiunto immagini semitrasparenti. La qualità sembra OK, ma dopo un paio di minuti di codifica, compilazione ed esecuzione dell'applicazione, la qualità sembra scadente.ImageList: Immagini a 32 bit perdono qualità

visualizzare Screenshot: enter image description here

proprietà usate

ColorDepth: Depth32Bit 
ImageSize: 16; 16 
TransparentColor: Transparent 

Ci sono pixel neri dietro pixel che erano semi-trasparente, ma non del tutto trasparente.

nuovamente l'aggiunta di tutte le immagini ripristina la qualità originale, ma dopo un paio di minuti, sembra che sul lato destro della schermata.

+0

Quale versione di Visual Studio? Scommetto che funziona bene se si carica l'elenco delle immagini in fase di esecuzione. Probabilmente un bug nel codice VS che memorizza/carica lo stato dell'elenco delle immagini in fase di progettazione. –

+0

È VS2010 Ultimate. Ho anche pensato prima di caricarli in fase di runtime, ma non è così che dovrebbe * essere *. Altre idee? – bytecode77

+0

Il caricamento al runtime da una risorsa è esattamente ciò che farei. Quindi posso scegliere una dimensione che corrisponda al ridimensionamento dei caratteri. –

risposta

8

Sembra che i dati canale alfa si perde quando le immagini vengono memorizzate come ImageStream (comportamento predefinito di VS Designer). Quindi, se siete ok per smettere di usare Designer per impostare le immagini in ImageList, Lei può usare immagini semitrasparenti fino a ColorDepth.Depth32Bit. È molto scomodo ma funziona.

Così si può mettere le immagini in file di Resources.resx, e aggiungerli in luogo appropriato nel codice. Per esempio nel costruttore di voi UserControl/Form, dopo la chiamata a InitializeComponent() dal codice come questo:

_imageList.Images.Add(Resources.Image32); 
    _imageList.Images.SetKeyName(0, "Image32"); 
    _myButton.Image = 0; 

(Questa informazione è disponibile nei commenti a risposta risposta segnato, ho aggiunto questo come risposta quindi sarebbe più difficile da perdere un'altra opzione disponibile)

Problemi correlati