GradientFill 函数 (wingdi.h)

GradientFill 函数填充矩形和三角形结构。

语法

BOOL GradientFill(
  [in] HDC        hdc,
  [in] PTRIVERTEX pVertex,
  [in] ULONG      nVertex,
  [in] PVOID      pMesh,
  [in] ULONG      nMesh,
  [in] ULONG      ulMode
);

参数

[in] hdc

目标设备上下文的句柄。

[in] pVertex

指向 TRIVERTEX 结构的数组的指针,每个结构都定义顶点。

[in] nVertex

pVertex 中的顶点数。

[in] pMesh

三角形模式下 GRADIENT_TRIANGLE 结构的数组,或矩形模式下 GRADIENT_RECT 结构的数组。

[in] nMesh

pMesh 中) (三角形或矩形的元素数。

[in] ulMode

渐变填充模式。 此参数的取值可为下列值之一:

含义
GRADIENT_FILL_RECT_H
在此模式下,两个终结点描述一个矩形。 矩形定义为具有由 TRIVERTEX 结构) 为左边缘和右边缘指定的恒定颜色 (。 GDI 内插从左到右边缘的颜色,并填充内部。
GRADIENT_FILL_RECT_V
在此模式下,两个终结点描述一个矩形。 矩形定义为具有由 TRIVERTEX 结构) 为上边缘和下边缘指定的恒定颜色 (。 GDI 内插从上到下边缘的颜色,并填充内部。
GRADIENT_FILL_TRIANGLE
在此模式下, 将 TRIVERTEX 结构的数组以及描述单独三角形的数组索引列表传递给 GDI。 GDI 在三角形顶点之间执行线性内插,并填充内部。 绘图在 24 和 32 bpp 模式下直接完成。 抖抖在 16、8、4 和 1 bpp 模式下执行。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE

注解

若要向三角形添加平滑着色,请使用三个三角形终结点调用 GradientFill 函数。 GDI 将以线性方式内插并填充三角形。 下面是着色三角形的绘图输出。

三角形的插图,该三角形从顶部点的橙色填充到底部的洋红色 若要向矩形添加平滑底纹,请使用矩形的左上角和右下角坐标调用 GradientFill 。 绘制矩形时使用两种着色模式。 在水平模式下,矩形从左到右着色。 在垂直模式下,矩形从上到下着色。 下面是两个带阴影的矩形的绘图输出 - 一个处于水平模式,另一个处于垂直模式:从左侧深色到右侧浅色矩形的插图 图示:从顶部深色到底部浅色的矩形GradientFill 函数使用网格方法指定要绘制的对象的终结点。 所有顶点都传递到 pVertex 数组中的 GradientFillpMesh 参数指定如何连接这些顶点以形成对象。 填充矩形时, pMesh 指向 GRADIENT_RECT 结构的数组。 每个 GRADIENT_RECT 结构指定 pVertex 数组中两个顶点的索引。 这两个顶点构成了一个矩形的左上边界和右下边界。

在填充三角形的情况下, pMesh 指向 GRADIENT_TRIANGLE 结构的数组。 每个 GRADIENT_TRIANGLE 结构指定 pVertex 数组中三个顶点的索引。 这三个顶点构成一个三角形。

为了简化硬件加速,此例程不需要在三角形内部实现像素完美。

请注意,GradientFill 不使用 TRIVERTEX 结构的 Alpha 成员。 若要使用具有透明度的 GradientFill,请调用 GradientFill,然后使用每个顶点的 alpha 通道的所需值调用 AlphaBlend

有关详细信息,请参阅 平滑底纹绘制着色三角形绘制着色矩形

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h (包括 Windows.h)
Library Msimg32.lib
DLL Msimg32.dll

另请参阅

位图函数

位图概述

EMRGRADIENTFILL

GRADIENT_RECT

GRADIENT_TRIANGLE

TRIVERTEX