CImageList::DrawIndirect

调用该成员函数从图像绘制图像列表。

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
);

参数

  • pimldp
    对包含有关绘制操作的信息的 IMAGELISTDRAWPARAMS 结构的指针。

  • pDC
    对目标设备上下文的指针。当处理时,必须删除此 CDC 对象。

  • nImage
    要绘制的图像的从零开始的索引。

  • pt
    包含要绘制图像的x和Y坐标的 POINT 结构。

  • sz
    指示图像的大小 范围 结构将绘制。

  • ptOrigin
    包含x和y坐标的 POINT 结构指定绘制操作的左上角有关图像。在x坐标左侧和在该y坐标上没有绘制图像的像素。

  • fStyle
    指定绘制样式,因此,可选择,复盖图像的标志。有关复盖图像的信息,请参见"备注"部分。MFC默认实现,ILD_NORMAL,绘制图像使用图像的背景颜色列表。如果背景色是 CLR_NONE 值,使用掩码,图像透明地绘制。

    其他可能的样式介绍在 IMAGELISTDRAWPARAMS 结构下的 fStyle 成员。

  • dwRop
    指定光栅操作代码中的值。这些代码定义颜色数据进行源矩形如何将与颜色数据为目标矩形实现最终颜色。MFC的默认实现,SRCCOPY,复制源矩形直接对目标矩形。如果 fStyle 参数不包括 ILD_ROP 标志,此参数将被忽略。

    其他可能的值将介绍 IMAGELISTDRAWPARAMS 结构下的 dwRop 成员。

  • rgbBack
    图像背景色,默认情况下 CLR_DEFAULT。此参数可以为应用程序定义的RGB值或一个以下值:

    含义

    CLR_DEFAULT

    默认背景色。图像绘制使用图像列表背景色。

    CLR_NONE

    没有背景色。透明地绘制图像。

  • rgbFore
    图像前景色,默认情况下 CLR_DEFAULT。此参数可以为应用程序定义的RGB值或一个以下值:

    含义

    CLR_DEFAULT

    默认前景色。图像绘制使用系统突出显示颜色作为前景颜色。

    CLR_NONE

    没有混合颜色。图像与目标设备上下文的颜色相混合。

    此参数,仅当 fStyle 包括 ILD_BLEND25ILD_BLEND50 标志,请使用。

  • fState
    指定绘制状态的标志。此成员可以包含一个或多个图像列表状态标志。

  • 框架
    影响行为该和Alpha混合效果。

    当使用 ILS_SATURATE,该成员表示已添加到RGB三元色每个颜色分量每个像素的在图标的值。

    当使用 ILS_APLHA,该成员表示alpha通道的值。此值可以为从0到255,0完全透明和255是完全不透明的。

  • crEffect
    用于发光和阴影效果 COLORREF 值。

返回值

TRUE,如果成功绘制图像;否则 FALSE

备注

如果加载Win32结构,请使用第一个版本。请使用第二个版本,如果希望利用一个或多个MFC的默认参数,或者避免管理机制。

复盖图像是绘制在主图像顶部的图像,指定此成员函数由 nImage 参数。绘制复盖率掩码使用会复盖掩码从一开始的索引的 绘制 成员函数通过使用 INDEXTOOVERLAYMASK 宏。

示例

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;
}      

要求

Header: afxcmn.h

请参见

参考

CImageList选件类

层次结构图

CImageList::SetOverlayImage