共用方式為


LinearGradientBrush::GetInterpolationColorCount 方法 (gdiplusbrush.h)

LinearGradientBrush::GetInterpolationColorCount方法會取得目前設定為此線性漸層筆刷插補的色彩數目。

Syntax

INT GetInterpolationColorCount();

傳回值

類型: INT

這個方法會傳回要針對這個線性漸層筆刷插補的色彩數目。 如果未使用LinearGradientBrush::SetInterpolationColors來設定色彩,或如果不正確位置傳遞至LinearGradientBrush::SetInterpolationColors,則 LinearGradientBrush::GetInterpolationColorCount會傳回 0。

備註

簡單的線性漸層筆刷有兩種色彩:開始界限的色彩,以及結束界限的色彩。 當您使用這類筆刷繪製時,當從開始界限移至結束界限時,色彩會逐漸從開始色彩變更為結束色彩。 您可以使用 LinearGradientBrush::SetInterpolationColors 方法來指定色彩陣列,以及要針對這個線性漸層筆刷插補的對應混合位置,來建立更複雜的漸層。

您可以藉由呼叫 其 LinearGradientBrush::GetInterpolationColors 方法,取得目前為線性漸層筆刷設定的色彩和混合位置。 呼叫 LinearGradientBrush::GetInterpolationColors 方法之前,您必須配置兩個緩衝區:一個用來保存色彩陣列,另一個用來保存混合位置的陣列。 您可以呼叫 LinearGradientBrush::GetInterpolationColorCount 方法來判斷這些緩衝區的必要大小。 色彩緩衝區的大小是 LinearGradientBrush::GetInterpolationColorCount 的傳回值,乘以 sizeof (Color) 。 混合位置緩衝區的大小是 LinearGradientBrush::GetInterpolationColorCount 的值乘以 sizeof ( REAL) 。

範例

下列範例會將這個線性漸層筆刷的色彩設定為紅色、藍色和綠色,並將混合位置設定為 0、0.3 和 1。 程式碼會呼叫 LinearGradientBrush::GetInterpolationColorCount 方法的 LinearGradientBrush 物件,以取得筆刷目前設定為插補的色彩數目。 接下來,程式碼會取得色彩及其位置。 然後,程式碼會以每個色彩填滿小型矩形。

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)
程式庫 Gdiplus.lib
Dll Gdiplus.dll

另請參閱

筆刷和填滿的圖形

Color

建立線性漸層

以色彩漸層填滿圖形

LinearGradientBrush \(英文\)

LinearGradientBrush::GetInterpolationColors

LinearGradientBrush::SetInterpolationColors

PathGradientBrush

Rect

SolidBrush