LinearGradientBrush::GetInterpolationColorCount 方法 (gdiplusbrush.h)
LinearGradientBrush::GetInterpolationColorCount 方法获取当前设置为为此线性渐变画笔内插的颜色数。
语法
INT GetInterpolationColorCount();
返回值
类型: INT
此方法返回要为此线性渐变画笔内插的颜色数。 如果尚未使用 LinearGradientBrush::SetInterpolationColors 设置颜色,或者如果将无效位置传递给 LinearGradientBrush::SetInterpolationColors,则 LinearGradientBrush::GetInterpolationColorCount 返回 0。
备注
简单的线性渐变画笔有两种颜色:起始边界处的颜色和结束边界的颜色。 使用此类画笔进行绘制时,从起始边界移动到结束边界时,颜色会逐渐从起始颜色更改为结束颜色。 可以使用 LinearGradientBrush::SetInterpolationColors 方法创建更复杂的渐变,以指定要为此线性渐变画笔内插的颜色数组及其相应的混合位置。
可以通过调用线性渐变画笔 的 LinearGradientBrush::GetInterpolationColors 方法获取当前为线性渐变画笔设置的颜色和混合位置。 在调用 LinearGradientBrush::GetInterpolationColors 方法之前,必须分配两个缓冲区:一个用于保存颜色数组,一个用于保存混合位置数组。 可以调用 LinearGradientBrush::GetInterpolationColorCount 方法来确定这些缓冲区的所需大小。 颜色缓冲区的大小是 LinearGradientBrush::GetInterpolationColorCount 的返回值乘以 size of (Color) 。 混合位置缓冲区的大小是 LinearGradientBrush::GetInterpolationColorCount 的值乘以 size of ( REAL) 。
示例
以下示例将此线性渐变画笔要内插的颜色设置为红色、蓝色和绿色,并将混合位置设置为 0、0.3 和 1。 该代码调用 LinearGradientBrush 对象的 LinearGradientBrush::GetInterpolationColorCount 方法,以获取当前设置为为画笔内插的颜色数。 接下来,代码获取颜色及其位置。 然后,代码使用每种颜色填充一个小矩形。
VOID Example_GetInterpColors(HDC hdc)
{
Graphics myGraphics(hdc);
// Create a linear gradient brush, and set the colors to be interpolated.
Color col[] = {
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
Color(255, 0, 255, 0)}; // green
REAL pos[] = {
0.0f, // red at the left edge
0.3f, // blue at 30 percent of the distance from
// left edge to right edge
1.0f}; // green at the right edge
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(100, 0),
Color(255, 0, 0, 0), // black
Color(255, 255, 255, 255)); // white
linGrBrush.SetInterpolationColors(col, pos, 3);
// Obtain information about the linear gradient brush.
INT colorCount = 0;
Color* colors = NULL;
REAL* positions = NULL;
// How many colors have been specified to be interpolated
// for this brush?
colorCount = linGrBrush.GetInterpolationColorCount();
// Allocate a buffer large enough to hold the set of colors.
colors = new Color[colorCount];
// Allocate a buffer to hold the relative positions of the colors.
positions = REAL[colorCount];
// Get the colors and their relative positions.
linGrBrush.GetInterpolationColors(colors, positions, colorCount);
// Fill a small rectangle with each of the colors.
SolidBrush* pSolidBrush;
for(INT j = 0; j < colorCount; j++)
{
pSolidBrush = new SolidBrush(colors[j]);
myGraphics.FillRectangle(pSolidBrush, 15*j, 0, 10, 10);
delete(pSolidBrush);
}
}
要求
最低受支持的客户端 | Windows XP、Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | gdiplusbrush.h (包括 Gdiplus.h) |
Library | Gdiplus.lib |
DLL | Gdiplus.dll |
请参阅
LinearGradientBrush::GetInterpolationColors