Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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).