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

LinearGradientBrush::GetInterpolationColors

LinearGradientBrush::SetInterpolationColors

PathGradientBrush

Rect

SolidBrush