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 |