PathGradientBrush::GetInterpolationColorCount 方法 (gdipluspath.h)

PathGradientBrush::GetInterpolationColorCount 方法获取当前为此路径渐变画笔指定的预设颜色数。

语法

INT GetInterpolationColorCount();

返回值

类型: INT

此方法返回当前为此路径渐变画笔指定的预设颜色数。

注解

简单路径渐变画笔有两种颜色:边界颜色和中心颜色。 使用此类画笔进行绘制时,从边界路径移动到中心点时,颜色会逐渐从边界颜色更改为中心颜色。 可以通过指定预设颜色数组和混合位置数组来创建更复杂的渐变。

可以通过调用 PathGradientBrush 对象的 PathGradientBrush::GetInterpolationColors 方法获取当前为 PathGradientBrush 对象设置的内插颜色和内插位置。 在调用 PathGradientBrush::GetInterpolationColors 方法之前,必须分配两个缓冲区:一个用于保存内插颜色数组,一个用于保存内插位置数组。 可以调用 PathGradientBrush 对象的 PathGradientBrush::GetInterpolationColorCount 方法来确定这些缓冲区的所需大小。 颜色缓冲区的大小是 GetInterpolationColorCount 的返回值乘以 sizeof (Color) 。 位置缓冲区的大小是 PathGradientBrush::GetInterpolationColorCount 的值乘以 size of ( REAL) 。

示例

以下示例从三角路径创建 PathGradientBrush 对象。 代码将预设颜色设置为红色、蓝色和水绿色,并将混合位置设置为 0、0.6 和 1。 该代码调用 PathGradientBrush 对象的 PathGradientBrush::GetInterpolationColorCount 方法,以获取当前为画笔设置的预设颜色数。 接下来,代码分配两个缓冲区:一个用于保存预设颜色数组,一个用于保存混合位置数组。 调用 PathGradientBrush 对象的 PathGradientBrush::GetInterpolationColors 方法时,将使用预设颜色和混合位置填充缓冲区。 最后,代码使用每种预设颜色填充一个小正方形。

VOID Example_GetInterpColors(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a path gradient brush from an array of points, and
   // set the interpolation colors for that brush.

   Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};
   PathGradientBrush pthGrBrush(points, 3);

   Color col[] = {
      Color(255, 255, 0, 0),     // red
      Color(255, 0, 0, 255),     // blue
      Color(255, 0, 255, 255)};  // aqua

   REAL pos[] = {
      0.0f,    // red at the boundary
      0.6f,    // blue 60 percent of the way from the boundary to the center
      1.0f};   // aqua at the center

   pthGrBrush.SetInterpolationColors(col, pos, 3);

   // Obtain information about the path gradient brush.
   INT colorCount = pthGrBrush.GetInterpolationColorCount();
   Color* colors = new Color[colorCount];
   REAL* positions = new REAL[colorCount];
   pthGrBrush.GetInterpolationColors(colors, positions, colorCount);

   // Fill a small square with each of the interpolation colors.
   SolidBrush solidBrush(Color(255, 255, 255, 255));

   for(INT j = 0; j < colorCount; ++j)
   {
      solidBrush.SetColor(colors[j]);
      graphics.FillRectangle(&solidBrush, 15*j, 0, 10, 10);
   }

   delete [] colors;
   delete [] positions; 
}

要求

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

另请参阅

画笔和填充形状

颜色

创建路径渐变

使用颜色渐变填充形状

PathGradientBrush

PathGradientBrush::GetInterpolationColors

PathGradientBrush::SetInterpolationColors