在MFC(Microsoft Foundation Classes)中,CImageList类确实有一个名为DrawEx的公共方法,它用于在设备上下文中绘制图像列表中的图标,提供了更多的灵活性。以下是CImageList::DrawEx方法的简要说明:
BOOL CImageList::DrawEx(
   int nImage,
   CDC* pDC,
   POINT pt,
   SIZE size,
   COLORREF clrBk,
   COLORREF clrOverlay,
   UINT nStyle = ILD_NORMAL,
   DWORD dwRop = SRCCOPY
);

  •  nImage: 图像列表中的图像索引。

  •  pDC: 指向设备上下文的指针,用于指定绘制的目标。

  •  pt: CPoint结构,指定图像在设备上下文中的位置。

  •  size: CSize结构,指定图像的大小。

  •  clrBk: 用于指定图像背景颜色的COLORREF值。可以使用CLR_NONE来表示透明背景。

  •  clrOverlay: 用于指定覆盖颜色的COLORREF值。如果使用CLR_NONE,则没有覆盖颜色。

  •  nStyle: 用于指定绘制样式的标志,类似于CImageList::Draw方法。

  •  dwRop: 用于指定光栅操作代码(Raster Operation Code,ROP2)的标志,控制图像的混合效果。


以下是一个简单的使用示例:
CImageList myImageList;
// ... 初始化 myImageList ...

CDC* pDC = GetDC(); // 获取设备上下文

POINT pt = {10, 10}; // 图像的位置
SIZE size = {32, 32}; // 图像的大小

// 在设备上下文中绘制图像列表中的图标
myImageList.DrawEx(0, pDC, pt, size, CLR_NONE, CLR_NONE, ILD_NORMAL, SRCCOPY);

ReleaseDC(pDC); // 释放设备上下文

这将在设备上下文中绘制图像列表中索引为0的图标,位置为(10, 10),大小为(32, 32)。CImageList::DrawEx方法提供了更多的参数,以支持更灵活的图像绘制需求。


转载请注明出处:http://www.zyzy.cn/article/detail/18267/MFC/CImageList