Rysowanie obrazów z poziomu listy obrazów
Aby narysować obraz, użyj funkcji składowej CImageList::D raw . Określisz wskaźnik do obiektu kontekstu urządzenia, indeks obrazu do narysowania, lokalizację w kontekście urządzenia, w którym ma być rysowanie obrazu, oraz zestaw flag wskazujący styl rysunku.
Po określeniu stylu Draw
ILD_TRANSPARENT użyje dwuetapowego procesu rysowania maskowanego obrazu. Najpierw wykonuje operację logiczną AND na bitach obrazu i bitach maski. Następnie wykonuje operację logiczną XOR na wynikach pierwszej operacji i bitów tła kontekstu urządzenia docelowego. Ten proces tworzy przezroczyste obszary na obrazie wynikowym; oznacza to, że każdy biały bit w masce powoduje, że odpowiedni bit w wynikowym obrazie będzie przezroczysty.
Przed narysowania obrazu maskowanego na tle koloru stałego należy użyć funkcji składowej SetBkColor , aby ustawić kolor tła listy obrazów na taki sam kolor jak miejsce docelowe. Ustawienie koloru eliminuje konieczność tworzenia przezroczystych obszarów na obrazie i umożliwia Draw
po prostu skopiowanie obrazu do kontekstu urządzenia docelowego, co powoduje znaczny wzrost wydajności. Aby narysować obraz, określ styl ILD_NORMAL podczas wywoływania metody Draw
.
Kolor tła można ustawić dla listy obrazów maskowanych (CImageList) w dowolnym momencie, aby był on prawidłowo rysowany na dowolnym stałym tle. Ustawienie koloru tła na CLR_NONE powoduje, że obrazy są domyślnie rysowane w przezroczysty sposób. Aby pobrać kolor tła listy obrazów, użyj funkcji składowej GetBkColor .
Style ILD_BLEND25 i ILD_BLEND50 dyżuj obraz z kolorem wyróżnienia systemu. Te style są przydatne, jeśli używasz maskowanego obrazu do reprezentowania obiektu, który użytkownik może wybrać. Na przykład możesz użyć stylu ILD_BLEND50 , aby narysować obraz po wybraniu go przez użytkownika.
Niemaskowany obraz jest kopiowany do kontekstu urządzenia docelowego przy użyciu SRCCOPY
operacji raster. Kolory na obrazie są takie same niezależnie od koloru tła kontekstu urządzenia. Style rysunku określone w Draw
pliku również nie mają wpływu na wygląd niemaskowanego obrazu.
Oprócz funkcji składowej Draw inna funkcja Draw, DrawIndirect, rozszerza możliwość renderowania obrazu. DrawIndirect
przyjmuje jako parametr strukturę IMAGELISTDRAWPARAMS . Ta struktura może służyć do dostosowywania renderowania bieżącego obrazu, w tym użycia kodów operacji rastrowych (ROP). Aby uzyskać więcej informacji na temat kodów ROP, zobacz Raster Operation Codes and Bitmaps as Brushes in the Windows SDK (Kody operacji rasterowych i map bitowych jako pędzle w zestawie SDK systemu Windows).