Disegno di immagini da un elenco di immagini
Per disegnare un'immagine, utilizzare la funzione membro CImageList::Draw. Si specificherà un puntatore a un oggetto di contesto di dispositivo, l'indice dell'immagine da disegnare, la posizione nel contesto di dispositivo su cui disegnare l'immagine e un set di flag per indicare lo stile del disegno.
Quando si specifica lo stile ILD_TRANSPARENT, Disegna utilizza un processo in due fasi per disegnare un'immagine mascherata. Innanzitutto, esegue un And logico sui bit dell'immagine e sui bit della maschera. Esegue un'operazione XOR logica nei risultati della prima operazione e nei bit di background del contesto del dispositivo di destinazione. Questo processo consente di creare aree trasparenti nell'immagine risultante; ovvero ogni bit bianco nella maschera rende trasparente il bit corrispondente nell'immagine.
Prima di disegnare un'immagine mascherata su uno sfondo a tinta unita, è necessario utilizzare la funzione membro SetBkColor per impostare il colore di sfondo dell'elenco di immagini sullo stesso colore della destinazione. Impostare il colore evita di dover creare aree trasparenti nell'immagine e consente a Disegna di copiare semplicemente l'immagine al contesto di dispositivo di destinazione, con una conseguente e rilevante crescita delle prestazioni. Per disegnare l'immagine, specificare lo stile ILD_NORMAL quando si chiama Disegna.
È possibile impostare il colore di sfondo per un elenco di immagini mascherato (CImageList) in qualsiasi momento in modo che lo disegni correttamente su uno sfondo a tinta unita. Impostare il colore di sfondo a CLR_NONE disegna le immagini trasparenti per impostazione predefinita. Per recuperare il colore di sfondo di un elenco di immagini, utilizzare la funzione membro GetBkColor.
Gli stili ILD_BLEND50 e ILD_BLEND25 colorano l'immagine con il colore evidenziatore di sistema. Questi stili sono utili se si utilizza un'immagine mascherata per rappresentare un oggetto che l'utente può selezionare. Ad esempio, è possibile utilizzare lo stile ILD_BLEND50 per disegnare l'immagine quando l'utente la seleziona.
Un'immagine non mascherata viene copiata nel contesto di dispositivo di destinazione tramite l'operazione raster di SRCCOPY. I colori dell'immagine hanno lo stesso aspetto indipendentemente dal colore di sfondo del contesto di dispositivo. Inoltre, gli stili di disegno specificati in Disegna non hanno effetto sull'aspetto di un'immagine non mascherata.
Oltre alla funzione membro Draw, un altra funzione, DrawIndirect, estende la possibilità di eseguire il rendering di un'immagine. DrawIndirect, accetta come parametro, una struttura IMAGELISTDRAWPARAMS. Questa struttura può essere utilizzata per personalizzare il rendering dell'immagine corrente, inclusi l'utilizzo dei codici di operazione raster (ROP). Per ulteriori informazioni sui codici ROP, vedere Codici di Operazione Raster e Bitmap come Brushes in Windows SDK.