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 |
另請參閱
LinearGradientBrush \(英文\)
LinearGradientBrush::GetInterpolationColors