Udostępnij za pośrednictwem


Rysowanie obrazów z listy obrazów

Aby narysować obraz, użyj funkcji składowej CImageList::Draw. 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 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 z pierwszej operacji i bitach tła w kontekście 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 aplikują dithering na obraz za pomocą koloru podświetlenia 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 rysowania określone w Draw także nie mają wpływu na wygląd niemaskowanego obrazu.

Oprócz funkcji członkowskiej Draw, funkcja DrawIndirect rozszerza możliwości 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).

Zobacz także

Korzystanie z CImageList
Sterowanie