Vykreslování obrázků ze seznamu obrázků
Pokud chcete nakreslit obrázek, použijte členovou funkci CImageList::D raw . Zadáte ukazatel na objekt kontextu zařízení, index obrázku, který se má nakreslit, umístění v kontextu zařízení, ve kterém chcete obrázek nakreslit, a sadu příznaků, které označují styl výkresu.
Když zadáte styl ILD_TRANSPARENT , Draw
pomocí dvoustupňového procesu nakreslete maskovaný obrázek. Nejprve provede logickou operaci AND na bitech obrázku a bitů masky. Potom provede logickou operaci XOR s výsledky první operace a bity pozadí kontextu cílového zařízení. Tento proces vytvoří průhledné oblasti ve výsledném obrázku; to znamená, že každý bílý bit v masce způsobí, že odpovídající bit ve výsledném obrázku bude průhledný.
Před nakreslením maskovaného obrázku na pozadí plné barvy byste měli pomocí členské funkce SetBkColor nastavit barvu pozadí seznamu obrázků na stejnou barvu jako cíl. Nastavení barvy eliminuje potřebu vytvářet průhledné oblasti na obrázku a umožňuje Draw
jednoduše zkopírovat obrázek do kontextu cílového zařízení, což vede k významnému zvýšení výkonu. Pokud chcete obrázek nakreslit, zadejte styl ILD_NORMAL při volání Draw
.
Barvu pozadí pro maskovaný seznam obrázků (CImageList) můžete kdykoli nastavit tak, aby se správně vykreslovala na libovolném pevném pozadí. Nastavení barvy pozadí na CLR_NONE způsobí, že obrázky se ve výchozím nastavení nakreslují transparentně. Pokud chcete načíst barvu pozadí seznamu obrázků, použijte funkci Člen GetBkColor .
Styly ILD_BLEND25 a ILD_BLEND50 zvýrazňují obrázek barvou zvýraznění systému. Tyto styly jsou užitečné, pokud použijete maskovaný obrázek k reprezentaci objektu, který může uživatel vybrat. Můžete například použít styl ILD_BLEND50 k nakreslení obrázku, když ho uživatel vybere.
Nemaskovaný obrázek se zkopíruje do kontextu cílového zařízení pomocí rastrové SRCCOPY
operace. Barvy na obrázku se zobrazují stejně bez ohledu na barvu pozadí kontextu zařízení. Styly výkresu zadané také Draw
nemají žádný vliv na vzhled nemaskovaného obrázku.
Kromě členské funkce Draw, další funkce DrawIndirect, rozšiřuje schopnost vykreslit obrázek. DrawIndirect
přebírá jako parametr strukturu IMAGELISTDRAWPARAMS . Tuto strukturu lze použít k přizpůsobení vykreslování aktuálního obrázku, včetně použití rastrových operací (ROP) kódů. Další informace o kódech ROP naleznete v tématu Raster Operation Codes and Bitmaps as Brushes in the Windows SDK.