以下是 ImageList_DrawEx 函数的基本信息:
BOOL ImageList_DrawEx(
HIMAGELIST himl,
int i,
HDC hdcDst,
int x,
int y,
int dx,
int dy,
COLORREF rgbBk,
COLORREF rgbFg,
UINT fStyle
);
参数说明:
- himl:源图像列表的句柄。
- i:要绘制的图像的索引。
- hdcDst:目标设备上下文的句柄,表示图像将被绘制到哪个设备上下文中。
- x:目标位置的 x 坐标。
- y:目标位置的 y 坐标。
- dx:绘制的宽度。
- dy:绘制的高度。
- rgbBk:背景颜色。
- rgbFg:前景颜色。
- fStyle:图像的绘制样式,可以是以下值的组合:
- ILD_BLEND25:使用 25% 的 alpha 混合效果。
- ILD_BLEND50:使用 50% 的 alpha 混合效果。
- ILD_BLEND:使用默认的 alpha 混合效果。
- ILD_FOCUS:在图像周围绘制焦点矩形。
- ILD_MASK:绘制图像的遮罩而不是彩色图像。
- ILD_NORMAL:绘制彩色图像。
- ILD_SELECTED:绘制选择的图像。
- ILD_SHADOW:在图像的右下角绘制一个阴影。
该函数返回一个 BOOL 类型的值,如果成功,返回值为非零;如果失败,返回值为零。
以下是一个简单的示例代码,演示如何使用 ImageList_DrawEx 函数:
#include <windows.h>
#include <commctrl.h>
int main() {
// 初始化 Common Controls
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_WIN95_CLASSES; // 或其他需要的标志
InitCommonControlsEx(&icex);
// 创建图像列表
HIMAGELIST himl = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 1, 0);
// 添加图像到图像列表
HICON hIcon = LoadIcon(GetModuleHandle(NULL), IDI_INFORMATION);
ImageList_AddIcon(himl, hIcon);
DestroyIcon(hIcon);
// 创建绘图设备上下文
HDC hdc = GetDC(NULL);
// 在窗口客户区绘制图像列表中的图像
ImageList_DrawEx(himl, 0, hdc, 20, 20, 16, 16, RGB(255, 255, 255), RGB(0, 0, 0), ILD_NORMAL);
// 释放绘图设备上下文
ReleaseDC(NULL, hdc);
// 释放图像列表
ImageList_Destroy(himl);
return 0;
}
在这个例子中,使用 ImageList_Create 函数创建一个图像列表,并使用 ImageList_AddIcon 函数添加一个图像。然后,使用 GetDC 获取屏幕的设备上下文,并调用 ImageList_DrawEx 函数在指定位置绘制图像列表中的图像。最后,通过调用 ReleaseDC 释放设备上下文,并通过调用 ImageList_Destroy 释放图像列表。
转载请注明出处:http://www.zyzy.cn/article/detail/24680/Win32 API/Commctrl.h/ImageList_DrawEx