共用方式為


PathGradientBrush::GetInterpolationColors 方法 (gdipluspath.h)

PathGradientBrush::GetInterpolationColors 方法會取得目前為此路徑漸層筆刷指定的預設色彩和混合位置。

語法

Status GetInterpolationColors(
  [out] Color *presetColors,
  [out] REAL  *blendPositions,
  [in]  INT   count
);

參數

[out] presetColors

類型: 色彩*

接收預設色彩之陣列的指標。 presetColors 陣列中指定索引的色彩會對應至 blendPositions 陣列中相同索引的混合位置。

[out] blendPositions

類型: REAL*

接收混合位置之陣列的指標。 每個混合位置都是從 0 到 1 的數位,其中 0 表示漸層的界限,而 1 表示中心點。 介於 0 到 1 之間的混合位置表示所有點的集合,這些點與界限到中心點之間的距離有一定分數。 例如,混合位置為 0.7 表示從界限到中心點的 70% 方向的所有點集合。

[in] count

類型: INT

整數,指定 presetColors 陣列中的項目數目。 這與 blendPositions 陣列中的元素數目相同。

傳回值

類型: 狀態

如果方法成功,它會傳回 Ok,這是 Status 列舉的元素。

如果方法失敗,它會傳回 Status 列舉的其他其中一個專案。

備註

簡單的路徑漸層筆刷有兩種色彩:界限色彩和中央色彩。 當您使用這類筆刷繪製時,當從界限路徑移至中心點時,色彩會逐漸從界限色彩變更為中心色彩。 您可以藉由指定預設色彩陣列和混合位置的陣列,來建立更複雜的漸層。

呼叫 PathGradientBrush::GetInterpolationColors 方法之前,您必須配置兩個緩衝區:一個用來保存預設色彩的陣列,另一個用來保存混合位置的陣列。 您可以呼叫 PathGradientBrush::GetInterpolationColorCount物件的 PathGradientBrush 方法,以判斷這些緩衝區的必要大小。 色彩緩衝區的大小是 PathGradientBrush::GetInterpolationColorCount 的傳回值,乘以 sizeof (Color) 。 位置緩衝區的大小是 PathGradientBrush::GetInterpolationColorCount 的值乘以 sizeof ( REAL) 。

範例

下列範例會從三角形路徑建立 PathGradientBrush 物件。 程序代碼會將預設色彩設定為紅色、藍色和青色,並將混合位置設定為 0、0.6 和 1。 程序代碼會呼叫 PathGradientBrush::GetInterpolationColorCount 物件的 PathGradientBrush 方法,以取得筆刷目前設定的預設色彩數目。 接下來,程式代碼會配置兩個緩衝區:一個用來保存預設色彩的陣列,另一個用來保存混合位置的陣列。 PathGradientBrush::GetInterpolationColors 方法的 PathGradientBrush 物件呼叫會以預設色彩和混合位置填滿緩衝區。 最後,程式代碼會以每個預設色彩填滿小方塊。

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

另請參閱

筆刷和填滿的圖形

色彩

建立路徑漸層

使用色彩漸層填滿圖形

PathGradientBrush

PathGradientBrush::GetInterpolationColorCount

PathGradientBrush::SetInterpolationColors