DrawIconEx 函数 (winuser.h)

将图标或光标绘制到指定的设备上下文中,执行指定的光栅操作,并按指定拉伸或压缩图标或光标。

语法

BOOL DrawIconEx(
  [in]           HDC    hdc,
  [in]           int    xLeft,
  [in]           int    yTop,
  [in]           HICON  hIcon,
  [in]           int    cxWidth,
  [in]           int    cyWidth,
  [in]           UINT   istepIfAniCur,
  [in, optional] HBRUSH hbrFlickerFreeDraw,
  [in]           UINT   diFlags
);

参数

[in] hdc

类型: HDC

图标或光标将绘制到的设备上下文的句柄。

[in] xLeft

类型: int

图标或光标左上角的逻辑 x 坐标。

[in] yTop

类型: int

图标或光标左上角的逻辑 y 坐标。

[in] hIcon

类型: HICON

要绘制的图标或光标的句柄。 此参数可以标识动画光标。

[in] cxWidth

类型: int

图标或光标的逻辑宽度。 如果此参数为零且 diFlags 参数 DI_DEFAULTSIZE,则函数使用 SM_CXICON 系统指标值来设置宽度。 如果此参数为零且未使用 DI_DEFAULTSIZE ,则函数将使用实际资源宽度。

[in] cyWidth

类型: int

图标或光标的逻辑高度。 如果此参数为零且 diFlags 参数 DI_DEFAULTSIZE,则函数使用 SM_CYICON 系统指标值来设置宽度。 如果此参数为零且未使用 DI_DEFAULTSIZE ,则函数将使用实际资源高度。

[in] istepIfAniCur

类型: UINT

要绘制的帧的索引(如果 hIcon 标识了动画光标)。 如果 hIcon 未标识动画游标,则忽略此参数。

[in, optional] hbrFlickerFreeDraw

类型: HBRUSH

系统用于无闪烁绘制的画笔的句柄。 如果 hbrFlickerFreeDraw 是有效的画笔句柄,系统会使用指定的背景色画笔创建屏幕外位图,将图标或光标绘制到位图中,然后将位图复制到 hdc 标识的设备上下文中。 如果 hbrFlickerFreeDrawNULL,系统会将图标或光标直接绘制到设备上下文中。

[in] diFlags

类型: UINT

绘图标志。 此参数的取值可为下列值之一:

含义
DI_COMPAT
0x0004
将忽略此标志。
DI_DEFAULTSIZE
0x0008
如果 cxWidthcyWidth 参数设置为零,则使用图标的系统指标值指定的宽度和高度绘制图标或光标。 如果未指定此标志,并且 cxWidthcyWidth 设置为零,则函数将使用实际资源大小。
DI_IMAGE
0x0002
使用图像绘制图标或光标。 请参阅“备注”。
DI_MASK
0x0001
使用掩码绘制图标或光标。 请参阅“备注”。
DI_NOMIRROR
0x0010
将图标绘制为未分配的图标。 默认情况下,如果 hdc 已镜像,则图标将绘制为镜像图标。
DI_NORMAL
0x0003
DI_IMAGEDI_MASK的组合。 请参阅“备注”。

返回值

类型: BOOL

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

DrawIconEx 函数将图标的左上角放置在 xLeftyTop 参数指定的位置。 该位置受设备上下文的当前映射模式的影响。

如果只设置了一个 DI_IMAGEDI_MASK 标志,则使用 SRCCOPY光栅操作代码绘制相应的位图。

如果同时设置了 DI_IMAGEDI_MASK 标志:

  • 如果图标或光标是 32 位 alpha 混合图标或光标,则使用 AC_SRC_OVER混合函数 绘制图像,并忽略掩码。
  • 对于所有其他图标或光标,使用 SRCAND光栅操作代码绘制蒙板,并使用 SRCINVERT光栅操作代码绘制图像

若要复制 DrawIcon (hDC, X, Y, hIcon),请调用 DrawIconEx ,如下所示:

DrawIconEx (hDC, X, Y, hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT | DI_DEFAULTSIZE); 

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 在 Windows 8) 中引入的 ext-ms-win-ntuser-gui-l1-1-0 (

请参阅

概念性

CopyImage

DrawIcon

图标

LoadImage

引用

BitBlt

AlphaBlend

BLENDFUNCTION