CImageList
Třída
Poskytuje funkce ovládacího prvku Seznam běžných imagí systému Windows.
Syntaxe
class CImageList : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CImageList::CImageList |
CImageList Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CImageList::Add |
Přidá obrázek nebo obrázky do seznamu obrázků. |
CImageList::Attach |
Připojí seznam obrázků k objektu CImageList . |
CImageList::BeginDrag |
Začne přetahovat obrázek. |
CImageList::Copy |
Zkopíruje obrázek uvnitř objektu CImageList . |
CImageList::Create |
Inicializuje seznam obrázků a připojí ho k objektu CImageList . |
CImageList::DeleteImageList |
Odstraní seznam obrázků. |
CImageList::DeleteTempMap |
Volá se obslužnou rutinou CWinApp nečinnosti k odstranění libovolného dočasného CImageList objektu vytvořeného FromHandle . |
CImageList::Detach |
Odpojte objekt seznamu obrázků od objektu CImageList a vrátí popisovač do seznamu obrázků. |
CImageList::DragEnter |
Uzamkne aktualizace během operace přetažení a zobrazí obrázek přetažení na zadané pozici. |
CImageList::DragLeave |
Odemkne okno a skryje obrázek přetažení, aby bylo možné okno aktualizovat. |
CImageList::DragMove |
Přesune obrázek, který se přetahuje během operace přetažení. |
CImageList::DragShowNolock |
Zobrazí nebo skryje obrázek přetažení během operace přetažení bez uzamčení okna. |
CImageList::Draw |
Nakreslí obrázek, který se přetahuje během operace přetažení. |
CImageList::DrawEx |
Nakreslí položku seznamu obrázků v zadaném kontextu zařízení. Funkce používá zadaný styl výkresu a prolnutí obrázku se zadanou barvou. |
CImageList::DrawIndirect |
Nakreslí obrázek ze seznamu obrázků. |
CImageList::EndDrag |
Ukončí operaci přetažení. |
CImageList::ExtractIcon |
Vytvoří ikonu založenou na obrázku a maskě v seznamu obrázků. |
CImageList::FromHandle |
Vrátí ukazatel na CImageList objekt při zadání úchytu do seznamu obrázků. CImageList Pokud objekt není připojený k popisovači, vytvoří se dočasný CImageList objekt a připojí se. |
CImageList::FromHandlePermanent |
Vrátí ukazatel na CImageList objekt při zadání úchytu do seznamu obrázků. CImageList Pokud objekt není připojený k popisovači, vrátí se hodnota NULL. |
CImageList::GetBkColor |
Načte aktuální barvu pozadí seznamu obrázků. |
CImageList::GetDragImage |
Získá dočasný seznam obrázků, který se používá k přetahování. |
CImageList::GetImageCount |
Načte počet obrázků v seznamu obrázků. |
CImageList::GetImageInfo |
Načte informace o obrázku. |
CImageList::GetSafeHandle |
Načte m_hImageList . |
CImageList::Read |
Přečte seznam obrázků z archivu. |
CImageList::Remove |
Odebere obrázek ze seznamu obrázků. |
CImageList::Replace |
Nahradí obrázek v seznamu obrázků novým obrázkem. |
CImageList::SetBkColor |
Nastaví barvu pozadí pro seznam obrázků. |
CImageList::SetDragCursorImage |
Vytvoří nový obrázek přetažení. |
CImageList::SetImageCount |
Obnoví počet obrázků v seznamu obrázků. |
CImageList::SetOverlayImage |
Přidá index obrázku založený na nule do seznamu obrázků, které se mají použít jako překryvné masky. |
CImageList::Write |
Zapíše seznam obrázků do archivu. |
Veřejné operátory
Název | Popis |
---|---|
CImageList::operator HIMAGELIST |
Vrátí připojenou HIMAGELIST k CImageList . |
Veřejné datové členy
Název | Popis |
---|---|
CImageList::m_hImageList |
Popisovač obsahující seznam obrázků připojený k tomuto objektu. |
Poznámky
Seznam obrázků je kolekce obrázků se stejnou velikostí, na kterou lze odkazovat pomocí indexu založeného na nule. Seznamy obrázků slouží k efektivní správě velkých sad ikon nebo rastrových obrázků. Všechny obrázky v seznamu obrázků jsou obsaženy v jednom širokoúhlém rastrovém obrázku ve formátu zařízení obrazovky. Seznam obrázků může obsahovat také monochromatický rastrový obrázek, který obsahuje masky používané k průhledné kreslení obrázků (styl ikony). Programovací rozhraní aplikace Microsoft Win32 (API) poskytuje funkce seznamu obrázků, které umožňují kreslit obrázky, vytvářet a zničit seznamy obrázků, přidávat a odebírat obrázky, nahrazovat obrázky, sloučit obrázky a přetahovat obrázky.
Tento ovládací prvek (a proto CImageList
třída) je k dispozici pouze pro programy spuštěné v systémech Windows 95/98 a systém Windows NT verze 3.51 a novější.
Další informace o použití CImageList
naleznete v tématu Ovládací prvky a použití CImageList
.
Hierarchie dědičnosti
CImageList
Požadavky
Záhlaví: afxcmn.h
CImageList::Add
Voláním této funkce přidáte jeden nebo více obrázků nebo ikonu do seznamu obrázků.
int Add(
CBitmap* pbmImage,
CBitmap* pbmMask);
int Add(
CBitmap* pbmImage,
COLORREF crMask);
int Add(HICON hIcon);
Parametry
pbmImage
Ukazatel na rastrový obrázek obsahující obrázek nebo obrázky Počet obrázků je odvozen z šířky rastrového obrázku.
pbmMask
Ukazatel na rastrový obrázek obsahující masku. Pokud se v seznamu obrázků nepoužívá žádná maska, bude tento parametr ignorován.
crMask
Barva použitá k vygenerování masky Každý pixel této barvy v daném rastrovém obrázku se změní na černou a odpovídající bit v masce je nastaven na jeden.
hIcon
Úchyt ikony, která obsahuje rastrový obrázek a masku nového obrázku.
Návratová hodnota
Index založený na nule prvního nového obrázku v případě úspěchu; jinak - 1.
Poznámky
Zodpovídáte za uvolnění popisovače ikony, až s ním budete hotovi.
Příklad
// Add my icons.
m_myImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_myImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
// Add my bitmap, make all black pixels transparent.
CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
m_myImageList.Add(&bm, RGB(0, 0, 0));
CImageList::Attach
Voláním této funkce připojíte seznam obrázků k objektu CImageList
.
BOOL Attach(HIMAGELIST hImageList);
Parametry
hImageList
Popisovač objektu seznamu obrázků.
Návratová hodnota
Nenulové, pokud byla příloha úspěšná; jinak 0.
Příklad
void AddQuestion(HIMAGELIST hmyImageList)
{
CImageList imgList;
// Attach the image list handle to the CImageList object.
imgList.Attach(hmyImageList);
// Add a new icon to the image list.
imgList.Add(AfxGetApp()->LoadStandardIcon(IDI_QUESTION));
// Detach the handle from the CImageList object.
imgList.Detach();
}
CImageList::BeginDrag
Voláním této funkce začnete přetahovat obrázek.
BOOL BeginDrag(
int nImage,
CPoint ptHotSpot);
Parametry
nImage
Index obrázku založený na nule, který chcete přetáhnout.
ptHotSpot
Souřadnice počáteční pozice přetažení (obvykle pozice kurzoru). Souřadnice jsou relativní vzhledem k levému hornímu rohu obrázku.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Tato funkce vytvoří dočasný seznam obrázků, který se používá k přetahování. Obrázek kombinuje zadaný obrázek a jeho masku s aktuálním kurzorem. V reakci na následné WM_MOUSEMOVE
zprávy můžete obrázek přetažení přesunout pomocí DragMove
členské funkce. Chcete-li ukončit operaci přetažení, můžete použít EndDrag
členské funkce.
Příklad
void CImageListDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// Initialize the drag image (usually called from WM_LBUTTONDOWN).
m_myImageList.BeginDrag(0, CPoint(0, 0));
m_myImageList.DragEnter(this, point);
CDialog::OnLButtonDown(nFlags, point);
}
CImageList::CImageList
CImageList
Vytvoří objekt.
CImageList();
CImageList::Copy
Tato členová funkce implementuje chování funkce ImageList_Copy
Win32 , jak je popsáno v sadě Windows SDK.
BOOL Copy(
int iDst,
int iSrc,
UINT uFlags = ILCF_MOVE);
BOOL Copy(
int iDst,
CImageList* pSrc,
int iSrc,
UINT uFlags = ILCF_MOVE);
Parametry
iDst
Index image založený na nule, který se má použít jako cíl operace kopírování.
iSrc
Index image založený na nule, který se má použít jako zdroj operace kopírování.
uFlags
Hodnota příznaku bitu, která určuje typ operace kopírování, která se má vytvořit. Tento parametr může být jedna z následujících hodnot:
Hodnota | Význam |
---|---|
ILCF_MOVE |
Zdrojová image se zkopíruje do indexu cílové image. Výsledkem této operace je více instancí dané image. ILCF_MOVE je výchozí možnost. |
ILCF_SWAP |
Umístění zdrojových a cílových imagí se vyměňují v seznamu imagí. |
pSrc
Ukazatel na CImageList
objekt, který je cílem operace kopírování.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak nula.
Příklad
CImageList myImageList2;
myImageList2.Create(32, 32, ILC_COLOR8, 0, 4);
// Copy the first image from myImageList2 and make it
// the first image of m_myImageList.
m_myImageList.Copy(0, &myImageList2, 0, ILCF_MOVE);
// Recopy the image to make it also the last image in m_myImageList.
m_myImageList.Copy(m_myImageList.GetImageCount() - 1, (int)0,
(UINT)ILCF_MOVE);
CImageList::Create
Inicializuje seznam obrázků a připojí ho k objektu CImageList
.
BOOL Create(
int cx,
int cy,
UINT nFlags,
int nInitial,
int nGrow);
BOOL Create(
UINT nBitmapID,
int cx,
int nGrow,
COLORREF crMask);
BOOL Create(
LPCTSTR lpszBitmapID,
int cx,
int nGrow,
COLORREF crMask);
BOOL Create(
CImageList& imagelist1,
int nImage1,
CImageList& imagelist2,
int nImage2,
int dx,
int dy);
BOOL Create(CImageList* pImageList);
Parametry
cx
Rozměry každého obrázku v pixelech
cy
Rozměry každého obrázku v pixelech
nFlags
Určuje typ seznamu obrázků, který se má vytvořit. Tento parametr může být kombinací následujících hodnot, ale může obsahovat pouze jednu z ILC_COLOR
těchto hodnot.
Hodnota | Význam |
---|---|
ILC_COLOR |
Pokud není zadán žádný z ostatních ILC_COLOR* příznaků, použijte výchozí chování. Výchozí hodnota je ILC_COLOR4 obvykle ; ale u starších ovladačů zobrazení je výchozí ILC_COLORDDB hodnota . |
ILC_COLOR4 |
Jako rastrový obrázek seznamu obrázků použijte 4bitový (16barevný) rastrový obrázek nezávislý na zařízení (DIB). |
ILC_COLOR8 |
Použijte 8bitovou část DIB. Barvy použité pro tabulku barev jsou stejné barvy jako polotónová paleta. |
ILC_COLOR16 |
Použijte 16bitovou část DIB (32/64k barvu). |
ILC_COLOR24 |
Použijte 24bitovou část DIB. |
ILC_COLOR32 |
Použijte 32bitovou část DIB. |
ILC_COLORDDB |
Použijte rastrový obrázek závislý na zařízení. |
ILC_MASK |
Používá masku. Seznam obrázků obsahuje dva rastrové obrázky, z nichž jeden je monochromatický rastrový obrázek použitý jako maska. Pokud tato hodnota není zahrnuta, seznam obrázků obsahuje pouze jeden rastrový obrázek. Další informace o maskovaných obrázcích najdete v části Kreslení obrázků ze seznamu obrázků. |
nInitial
Počet obrázků, které seznam obrázků na začátku obsahuje
nGrow
Počet obrázků, podle kterých se seznam obrázků může zvětšit, když systém potřebuje změnit velikost seznamu, aby se uvolnil prostor pro nové obrázky. Tento parametr představuje počet nových obrázků, které může seznam obrázků se změněnou velikostí obsahovat.
nBitmapID
ID prostředků rastrového obrázku, která se mají přidružit k seznamu obrázků.
crMask
Barva použitá k vygenerování masky Každý pixel této barvy v zadaném rastrovém obrázku se změní na černou a odpovídající bit v masce je nastaven na jeden.
lpszBitmapID
Řetězec obsahující ID prostředků obrázků.
imagelist1
Odkaz na CImageList
objekt.
nImage1
Index prvního existujícího obrázku
imagelist2
Odkaz na CImageList
objekt.
nImage2
Index druhého existujícího obrázku
dx
Posun osy x druhého obrázku ve vztahu k prvnímu obrázku v pixelech.
dy
Posun osy y druhého obrázku ve vztahu k prvnímu obrázku v pixelech.
pImageList
Ukazatel na CImageList
objekt.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Sestavíte ho CImageList
ve dvou krocích. Nejprve zavolejte konstruktor a potom volání Create
, který vytvoří seznam obrázků a připojí ho k objektu CImageList
.
Příklad
m_myImageList.Create(32, 32, ILC_COLOR8, 0, 4);
CImageList::DeleteImageList
Voláním této funkce odstraníte seznam obrázků.
BOOL DeleteImageList();
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Příklad
// Delete the image list and verify.
myImageList2.DeleteImageList();
ASSERT(myImageList2.GetSafeHandle() == NULL);
CImageList::DeleteTempMap
Volá se automaticky obslužnou rutinou nečinnosti, DeleteTempMap
odstraní všechny dočasné CImageList
objekty vytvořené fromHandle, ale nezničí žádné popisovače (hImageList
) dočasně přidružené k objektůmImageList
.CWinApp
static void PASCAL DeleteTempMap();
Příklad
// Note that this is a static member so an instantiated CImageList
// object is unnecessary.
CImageList::DeleteTempMap();
CImageList::Detach
Voláním této funkce odpojete objekt seznamu obrázků od objektu CImageList
.
HIMAGELIST Detach();
Návratová hodnota
Popisovač objektu seznamu obrázků.
Poznámky
Tato funkce vrátí popisovač objektu seznamu obrázků.
Příklad
Podívejte se na příklad pro CImageList::Attach
.
CImageList::DragEnter
Během operace přetažení uzamkne aktualizace okna určeného uživatelem pWndLock
a zobrazí obrázek přetažení na pozici určené point
.
static BOOL PASCAL DragEnter(
CWnd* pWndLock,
CPoint point);
Parametry
pWndLock
Ukazatel myši na okno, které vlastní obrázek přetažení.
point
Pozice, na které se má zobrazit obrázek přetažení. Souřadnice jsou relativní vzhledem k levému hornímu rohu okna (nikoli klientské oblasti).
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Souřadnice jsou relativní vzhledem k levému rohu okna, takže při zadávání souřadnic musíte kompenzovat šířky prvků okna, jako jsou ohraničení, záhlaví a řádek nabídek.
Pokud pWndLock
ano NULL
, tato funkce nakreslí obrázek v kontextu zobrazení přidruženém k okně plochy a souřadnice jsou relativní vzhledem k levému hornímu rohu obrazovky.
Tato funkce uzamkne všechny ostatní aktualizace daného okna během operace přetažení. Pokud během operace přetažení potřebujete udělat nějaký výkres, například zvýraznit cíl operace přetažení, můžete přetažením dočasně skrýt přetaženou image pomocí CImageList::DragLeave
funkce.
Příklad
Podívejte se na příklad pro CImageList::BeginDrag
.
CImageList::DragLeave
Odemkne okno určené pWndLock
a skryje obrázek přetažení, což umožní aktualizaci okna.
static BOOL PASCAL DragLeave(CWnd* pWndLock);
Parametry
pWndLock
Ukazatel myši na okno, které vlastní obrázek přetažení.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Příklad
Podívejte se na příklad pro CImageList::EndDrag
.
CImageList::DragMove
Voláním této funkce přesunete obrázek, který se přetahuje během operace přetažení.
static BOOL PASCAL DragMove(CPoint pt);
Parametry
pt
Nová pozice přetažení
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Tato funkce se obvykle volá v reakci na WM_MOUSEMOVE
zprávu. Chcete-li zahájit operaci přetažení, použijte členovou BeginDrag
funkci.
Příklad
void CImageListDlg::OnMouseMove(UINT nFlags, CPoint point)
{
m_myImageList.DragMove(point);
CDialog::OnMouseMove(nFlags, point);
}
CImageList::DragShowNolock
Zobrazí nebo skryje obrázek přetažení během operace přetažení bez uzamčení okna.
static BOOL PASCAL DragShowNolock(BOOL bShow);
Parametry
bShow
Určuje, zda se má obrázek přetažení zobrazit.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Funkce CImageList::DragEnter
uzamkne všechny aktualizace okna během operace přetažení. Tato funkce ale nezamkne okno.
CImageList::Draw
Voláním této funkce nakreslete obrázek, který se přetahuje během operace přetažení.
BOOL Draw(
CDC* pDC,
int nImage,
POINT pt,
UINT nStyle);
Parametry
pDC
Ukazatel na kontext cílového zařízení
nImage
Index obrázku založený na nule, který se má nakreslit.
pt
Umístění, ve kterém se má kreslit v zadaném kontextu zařízení.
nStyle
Příznak určující styl výkresu Může to být jedna nebo více z těchto hodnot:
Hodnota | Význam |
---|---|
ILD_BLEND25 , ILD_FOCUS |
Nakreslí obrázek, prolnutí 25 procent s barvou zvýraznění systému. Tato hodnota nemá žádný vliv, pokud seznam obrázků neobsahuje masku. |
ILD_BLEND50 , , ILD_SELECTED ILD_BLEND |
Nakreslí obrázek a prolíná 50 procent barvou zvýraznění systému. Tato hodnota nemá žádný vliv, pokud seznam obrázků neobsahuje masku. |
ILD_MASK |
Nakreslí masku. |
ILD_NORMAL |
Nakreslí obrázek pomocí barvy pozadí pro seznam obrázků. Pokud je CLR_NONE barva pozadí hodnotou, obrázek se transparentně nakreslí pomocí masky. |
ILD_TRANSPARENT |
Nakreslí obrázek transparentně pomocí masky bez ohledu na barvu pozadí. |
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Příklad
Podívejte se na příklad pro CImageList::SetOverlayImage
.
CImageList::DrawEx
Nakreslí položku seznamu obrázků v zadaném kontextu zařízení.
BOOL DrawEx(
CDC* pDC,
int nImage,
POINT pt,
SIZE sz,
COLORREF clrBk,
COLORREF clrFg,
UINT nStyle);
Parametry
pDC
Ukazatel na kontext cílového zařízení
nImage
Index obrázku založený na nule, který se má nakreslit.
pt
Umístění, ve kterém se má kreslit v zadaném kontextu zařízení.
sz
Velikost části obrázku, která se má nakreslit vzhledem k levému hornímu rohu obrázku. Viz dx
a dy
v ImageList_DrawEx
sadě Windows SDK.
clrBk
Barva pozadí obrázku Viz rgbBk
v ImageList_DrawEx
sadě Windows SDK.
clrFg
Barva popředí obrázku Viz rgbFg
v ImageList_DrawEx
sadě Windows SDK.
nStyle
Příznak určující styl výkresu Viz fStyle
v ImageList_DrawEx
sadě Windows SDK.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Funkce používá zadaný styl výkresu a prolnutí obrázku se zadanou barvou.
Příklad
m_myImageList.DrawEx(&dc, 0, CPoint(0, 0), CSize(16, 16), CLR_DEFAULT,
CLR_DEFAULT, ILD_IMAGE);
CImageList::DrawIndirect
Voláním této členské funkce nakreslete obrázek ze seznamu obrázků.
BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);
BOOL DrawIndirect(
CDC* pDC,
int nImage,
POINT pt,
SIZE sz,
POINT ptOrigin,
UINT fStyle = ILD_NORMAL,
DWORD dwRop = SRCCOPY,
COLORREF rgbBack = CLR_DEFAULT,
COLORREF rgbFore = CLR_DEFAULT,
DWORD fState = ILS_NORMAL,
DWORD Frame = 0,
COLORREF crEffect = CLR_DEFAULT);
Parametry
pimldp
Ukazatel na IMAGELISTDRAWPARAMS
strukturu, která obsahuje informace o operaci kreslení.
pDC
Ukazatel na kontext cílového zařízení. Jakmile s ním budete hotovi, musíte tento CDC
objekt odstranit.
nImage
Index obrázku založený na nule, který se má nakreslit.
pt
Struktura POINT
obsahující souřadnice x a y, kde bude obrázek nakreslen.
sz
Struktura SIZE
označující velikost obrázku, který se má nakreslit.
ptOrigin
Struktura POINT
obsahující souřadnice x a y určující levý horní roh operace kreslení s ohledem na samotný obrázek. Pixely obrázku, které jsou vlevo od souřadnice x a nad souřadnicí y, nejsou vykresleny.
fStyle
Příznak určující styl výkresu a volitelně i překryvný obrázek. Informace o překryvném obrázku najdete v části Poznámky. Výchozí implementace MFC nakreslí ILD_NORMAL
obrázek pomocí barvy pozadí pro seznam obrázků. Pokud je CLR_NONE
barva pozadí hodnotou, obrázek se transparentně nakreslí pomocí masky.
Další možné styly jsou popsány pod fStyle
členem IMAGELISTDRAWPARAMS
struktury.
dwRop
Hodnota určující raster-operation kód. Tyto kódy definují, jak se barevná data zdrojového obdélníku zkombinují s barevnými daty pro cílový obdélník, aby se dosáhlo konečné barvy. Výchozí implementace SRCCOPY
MFC, zkopíruje zdrojový obdélník přímo do cílového obdélníku. Tento parametr se ignoruje, pokud fStyle
parametr neobsahuje ILD_ROP
příznak.
Další možné hodnoty jsou popsány pod dwRop
členem IMAGELISTDRAWPARAMS
struktury.
rgbBack
Barva pozadí obrázku ve výchozím nastavení CLR_DEFAULT
. Tento parametr může být hodnota RGB definovaná aplikací nebo jedna z následujících hodnot:
Hodnota | Význam |
---|---|
CLR_DEFAULT |
Výchozí barva pozadí Obrázek se nakreslí pomocí barvy pozadí seznamu obrázků. |
CLR_NONE |
Žádná barva pozadí. Obrázek je nakreslen transparentně. |
rgbFore
Barva popředí obrázku ve výchozím nastavení CLR_DEFAULT
. Tento parametr může být hodnota RGB definovaná aplikací nebo jedna z následujících hodnot:
Hodnota | Význam |
---|---|
CLR_DEFAULT |
Výchozí barva popředí Obrázek se nakreslí barvou zvýraznění systému jako barvou popředí. |
CLR_NONE |
Žádná barva směsi. Obrázek se spojí s barvou kontextu cílového zařízení. |
Tento parametr se používá pouze v případě, že fStyle
obsahuje ILD_BLEND25
příznak nebo ILD_BLEND50
příznak.
fState
Příznak určující stav výkresu Tento člen může obsahovat jeden nebo více příznaků stavu seznamu obrázků.
Frame
Ovlivňuje chování sytých a alfa-blending efektů.
Při použití ILS_SATURATE
s , tento člen obsahuje hodnotu, která je přidána do každé barevné komponenty RGB triplet pro každý pixel v ikoně.
Při použití ILS_APLHA
s tímto členem je hodnota alfa kanálu. Tato hodnota může být od 0 do 255, přičemž hodnota 0 je zcela průhledná a 255 je zcela neprůhledná.
crEffect
Hodnota použitá COLORREF
pro efekty záře a stínu.
Návratová hodnota
TRUE
je-li obrázek úspěšně nakreslen; jinak FALSE
.
Poznámky
Pokud chcete vyplnit strukturu Win32 sami, použijte první verzi. Druhou verzi použijte, pokud chcete využít jeden nebo více výchozích argumentů mfc nebo se vyhnout správě struktury.
Překryvný obrázek je obrázek, který je nakreslený nad primárním obrázkem zadaným nImage
v této členské funkci parametrem. Nakreslete překryvnou masku pomocí Draw
členské funkce s jedním indexem masky překrytí určeného INDEXTOOVERLAYMASK
pomocí makra.
Příklad
int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();
::ImageList_GetIconSize(m_myImageList, &cx, &cy);
// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
m_myImageList.DrawIndirect(&dc, i, CPoint(dx, 0),
CSize(cx, cy), CPoint(0, 0));
dx += cx;
}
CImageList::EndDrag
Voláním této funkce ukončíte operaci přetažení.
static void PASCAL EndDrag();
Poznámky
Chcete-li zahájit operaci přetažení, použijte členovou BeginDrag
funkci.
Příklad
void CImageListDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// Terminate the drag image (usually called from WM_LBUTTONUP).
m_myImageList.DragLeave(this);
m_myImageList.EndDrag();
CDialog::OnLButtonUp(nFlags, point);
}
CImageList::ExtractIcon
Voláním této funkce vytvoříte ikonu založenou na obrázku a související masce v seznamu obrázků.
HICON ExtractIcon(int nImage);
Parametry
nImage
Index obrázku založený na nule
Návratová hodnota
Popisovač ikony v případě úspěchu; jinak NULL
.
Poznámky
Tato metoda spoléhá na chování ImageList_ExtractIcon
makra k vytvoření ikony. Další informace o vytváření a čištění ikon najdete v ImageList_ExtractIcon
makrech.
Příklad
int i, dx, cx, cy, nCount = m_myImageList.GetImageCount();
HICON hIcon;
::ImageList_GetIconSize(m_myImageList, &cx, &cy);
// Draw the images of the image list on the DC.
for (dx = 0, i = 0; i < nCount; i++)
{
hIcon = m_myImageList.ExtractIcon(i);
dc.DrawIcon(dx, 0, hIcon);
dx += cx;
}
CImageList::FromHandle
Vrátí ukazatel na CImageList
objekt při zadání úchytu do seznamu obrázků.
static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
Parametry
hImageList
Určuje seznam obrázků.
Návratová hodnota
Ukazatel na CImageList
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
CImageList
Pokud ještě není připojen k popisovači, vytvoří se dočasný CImageList
objekt a připojí se. Tento dočasný CImageList
objekt je platný pouze do doby, kdy aplikace příště ve smyčce událostí nečinně odstraní všechny dočasné objekty.
Příklad
CImageList *ConvertHandle(HIMAGELIST hmyImageList)
{
// Convert the HIMAGELIST to a CImageList*.
ASSERT(hmyImageList != NULL);
CImageList *pmyImageList = CImageList::FromHandle(hmyImageList);
ASSERT(pmyImageList != NULL);
return pmyImageList;
}
CImageList::FromHandlePermanent
Vrátí ukazatel na CImageList
objekt při zadání úchytu do seznamu obrázků.
static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
Parametry
hImageList
Určuje seznam obrázků.
Návratová hodnota
Ukazatel na CImageList
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
CImageList
Pokud objekt není připojen k popisovači, NULL
vrátí se.
Příklad
CImageList *ConvertHandlePermanent(HIMAGELIST hmyImageList)
{
// Convert the HIMAGELIST to a CImageList*.
ASSERT(hmyImageList != NULL);
CImageList *pmyImageList = CImageList::FromHandlePermanent(hmyImageList);
ASSERT(pmyImageList != NULL);
return pmyImageList;
}
CImageList::GetBkColor
Voláním této funkce načtete aktuální barvu pozadí seznamu obrázků.
COLORREF GetBkColor() const;
Návratová hodnota
Hodnota barvy RGB barvy pozadí objektu CImageList
.
Příklad
Podívejte se na příklad pro CImageList::SetBkColor
.
CImageList::GetDragImage
Získá dočasný seznam obrázků, který se používá k přetahování.
static CImageList* PASCAL GetDragImage(
LPPOINT lpPoint,
LPPOINT lpPointHotSpot);
Parametry
lpPoint
POINT
Adresa struktury, která obdrží aktuální pozici přetažení.
lpPointHotSpot
POINT
Adresa struktury, která obdrží posun obrázku přetažení vzhledem k pozici přetažení.
Návratová hodnota
V případě úspěchu ukazatel na dočasný seznam obrázků, který se používá k přetahování; v opačném případě . NULL
CImageList::GetImageCount
Voláním této funkce načtěte počet obrázků v seznamu obrázků.
int GetImageCount() const;
Návratová hodnota
Početobrázkůch
Příklad
Podívejte se na příklad pro CImageList::ExtractIcon
.
CImageList::GetImageInfo
Voláním této funkce načtěte informace o obrázku.
BOOL GetImageInfo(
int nImage,
IMAGEINFO* pImageInfo) const;
Parametry
nImage
Index obrázku založený na nule
pImageInfo
Ukazatel na IMAGEINFO
strukturu, která přijímá informace o obrázku. Informace v této struktuře lze použít k přímé manipulaci s rastrovými obrázky pro obrázek.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Struktura IMAGEINFO
obsahuje informace o obrázku v seznamu obrázků.
CImageList::GetSafeHandle
Voláním této funkce načtěte m_hImageList
datový člen.
HIMAGELIST GetSafeHandle() const;
Návratová hodnota
Popisovač připojeného seznamu obrázků; v opačném případě NULL
, pokud není připojen žádný objekt.
Příklad
// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.GetSafeHandle();
CImageList::m_hImageList
Popisovač seznamu obrázků připojený k tomuto objektu.
HIMAGELIST m_hImageList;
Poznámky
Datový m_hImageList
člen je veřejná proměnná typu HIMAGELIST
.
Příklad
// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList.m_hImageList;
CImageList::operator HIMAGELIST
Tento operátor slouží k získání připojeného popisovače objektu CImageList
.
operator HIMAGELIST() const;
Návratová hodnota
V případě úspěchu popisovač seznamu obrázků reprezentovaný objektem CImageList
; jinak NULL
.
Poznámky
Tento operátor je operátor přetypování, který podporuje přímé použití objektu HIMAGELIST
.
Příklad
// Get the safe handle to the image list.
HIMAGELIST hImageList = m_myImageList;
CImageList::Read
Voláním této funkce přečtete seznam obrázků z archivu.
BOOL Read(CArchive* pArchive);
Parametry
pArchive
Ukazatel na CArchive
objekt, ze kterého se má číst seznam obrázků.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Příklad
// Open the archive to load the image list from.
CFile myFile(_T("myfile.data"), CFile::modeRead);
CArchive ar(&myFile, CArchive::load);
CImageList myImgList;
// Load the image list from the archive.
myImgList.Read(&ar);
CImageList::Remove
Voláním této funkce odeberete obrázek z objektu seznamu obrázků.
BOOL Remove(int nImage);
Parametry
nImage
Index image založený na nule, který chcete odebrat.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Všechny následující nImage
položky se teď přesunou o jednu pozici dolů. Pokud například seznam obrázků obsahuje dvě položky, odstranění první položky způsobí, že zbývající položka bude nyní na první pozici. nImage
=0 pro položku na první pozici.
Příklad
// Remove every other image from the image list.
for (int i = 0; i < m_myImageList.GetImageCount(); i++)
{
m_myImageList.Remove(i);
}
CImageList::Replace
Voláním této funkce nahradíte obrázek v seznamu obrázků novým obrázkem.
BOOL Replace(
int nImage,
CBitmap* pbmImage,
CBitmap* pbmMask);
int Replace(
int nImage,
HICON hIcon);
Parametry
nImage
Index image založený na nule, který se má nahradit.
pbmImage
Ukazatel na rastrový obrázek obsahující obrázek.
pbmMask
Ukazatel na rastrový obrázek obsahující masku. Pokud se v seznamu obrázků nepoužívá žádná maska, bude tento parametr ignorován.
hIcon
Úchyt ikony, která obsahuje rastrový obrázek a masku pro nový obrázek.
Návratová hodnota
Vrácená verze BOOL
vrátí nenulové, pokud je úspěšná, jinak 0.
Verze vracející int
nulu vrátí index obrázku založený na nule, pokud je úspěšný; jinak – 1.
Poznámky
Voláním této členské funkce po volání SetImageCount
přiřaďte nové platné obrázky zástupným číslům indexu obrázků.
Příklad
Podívejte se na příklad pro CImageList::SetImageCount
.
CImageList::SetBkColor
Voláním této funkce nastavíte barvu pozadí seznamu obrázků.
COLORREF SetBkColor(COLORREF cr);
Parametry
cr
Barva pozadí, která se má nastavit. Může to být CLR_NONE
. V takovém případě se obrázky nakreslují transparentně pomocí masky.
Návratová hodnota
Předchozí barva pozadí, pokud byla úspěšná; jinak CLR_NONE
.
Příklad
// Set the background color to white.
m_myImageList.SetBkColor(RGB(255, 255, 255));
ASSERT(m_myImageList.GetBkColor() == RGB(255, 255, 255));
CImageList::SetDragCursorImage
Vytvoří nový obrázek přetažením zkombinováním daného obrázku (obvykle obrázku kurzoru myši) s aktuálním obrázkem přetažení.
BOOL SetDragCursorImage(
int nDrag,
CPoint ptHotSpot);
Parametry
nDrag
Index nového obrázku, který se má zkombinovat s přetažením.
ptHotSpot
Umístění horkého místa v novém obrázku
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Vzhledem k tomu, že funkce přetažení používají nový obrázek během operace přetažení, měli byste použít funkci Windows ShowCursor
ke skrytí skutečného kurzoru myši po volání CImageList::SetDragCursorImage
. Jinak se může zdát, že systém má po dobu trvání operace přetažení dva kurzory myši.
CImageList::SetImageCount
Voláním této členské funkce obnovíte počet obrázků v objektu CImageList
.
BOOL SetImageCount(UINT uNewCount);
Parametry
uNewCount
Hodnota určující nový celkový počet obrázků v seznamu obrázků.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak nula.
Poznámky
Pokud zavoláte tuto členovou funkci, aby se zvýšil počet obrázků v seznamu obrázků, zavolejte Replace
pro každý další obrázek, aby se nové indexy přiřadily platným obrázkům. Pokud se vám nepodaří přiřadit indexy k platným imagím, operace kreslení, které vytvoří nové image, budou nepředvídatelné.
Pokud pomocí této funkce zmenšíte velikost seznamu obrázků, oříznuté obrázky se uvolní.
Příklad
// Set the image count of the image list to be 10 with
// all images being the system question mark icon.
m_myImageList.SetImageCount(10);
HICON hIcon = AfxGetApp()->LoadStandardIcon(IDI_QUESTION);
for (int i = 0; i < 10; i++)
{
m_myImageList.Replace(i, hIcon);
}
CImageList::SetOverlayImage
Voláním této funkce přidáte index obrázku založený na nule do seznamu obrázků, které se mají použít jako překryvné masky.
BOOL SetOverlayImage(
int nImage,
int nOverlay);
Parametry
nImage
Index obrázku založený na nule, který se použije jako překryvná maska.
nOverlay
Jeden index překryvné masky.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Do seznamu lze přidat až čtyři indexy.
Překryvná maska je obrázek nakreslený transparentně přes jiný obrázek. Nakreslete překryvnou masku nad obrázkem pomocí CImageList::Draw
členské funkce s indexem překrytí určeného INDEXTOOVERLAYMASK
pomocí makra.
Příklad
// Add a new image to the image list.
int nIndex = m_myImageList.Add(AfxGetApp()->LoadStandardIcon(IDI_QUESTION));
if (nIndex != -1)
{
// Make the new image an overlay image.
m_myImageList.SetOverlayImage(nIndex, 1);
// Draw the first image in the image list with an overlay image.
m_myImageList.Draw(&dc, 0, CPoint(0, 0), INDEXTOOVERLAYMASK(1));
}
CImageList::Write
Voláním této funkce napište objekt seznamu obrázků do archivu.
BOOL Write(CArchive* pArchive);
Parametry
pArchive
Ukazatel na CArchive
objekt, ve kterém se má uložit seznam obrázků.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Příklad
// Open the archive to store the image list in.
CFile myFile(_T("myfile.data"), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&myFile, CArchive::store);
// Store the image list in the archive.
m_myImageList.Write(&ar);
Viz také
CObject
Třída
Graf hierarchie
CListCtrl
Třída
CTabCtrl
Třída