LinearGradientBrush::GetBlend 方法 (gdiplusbrush.h)
LinearGradientBrush::GetBlend方法會從LinearGradientBrush物件取得混合因數及其對應的混合位置。
語法
Status GetBlend(
[out] REAL *blendFactors,
[out] REAL *blendPositions,
[in] INT count
);
參數
[out] blendFactors
類型: REAL*
接收混合因數之陣列的指標。 陣列中的每個數位都會指出結束色彩的百分比,而且介於 0.0 到 1.0 之間。
[out] blendPositions
類型: REAL*
接收混合位置之陣列的指標。 陣列中的每個數位都表示開始界限與結束界限之間的距離百分比,而且介於 0.0 到 1.0 之間,其中 0.0 表示漸層的起始界限,而 1.0 表示結束界限。 介於 0.0 和 1.0 之間的混合位置表示與界限線平行的線條,這是從開始界限到結束界限之間的特定距離分數。 例如,0.7 的混合位置表示距離從開始界限到結束界限的距離 70%。 色彩在與界限線平行的線條上是常數。
[in] count
類型: INT
整數,指定要擷取的混合因數數目。 在呼叫LinearGradientBrush::GetBlend 物件的 LinearGradientBrush::GetBlend方法之前,請先呼叫該相同LinearGradientBrush 物件的 LinearGradientBrush::GetBlendCount方法,以判斷目前的混合因數數目。 擷取的混合位置數目與擷取的混合因數數目相同。
傳回值
類型: 狀態
如果方法成功,它會傳回 Ok,這是 Status 列舉的元素。
如果方法失敗,它會傳回 Status 列舉的其他其中一個專案。
備註
LinearGradientBrush物件有兩個平行界限:起始界限和結束界限。 色彩會與這兩個界限中的每一個相關聯。 每個界限都是一條直線,通過指定的點 — 起始界限通過起點;結束界限會通過結束點,且垂直于線性漸層筆刷的方向。 線性漸層筆刷的方向會遵循起點和結束點所定義的線條。 這一行是「方向線」,可以是水準、垂直或對角線。 位於與界限平行的線條上的所有點都是相同的色彩。 當您使用線性漸層筆刷填滿區域時,色彩會隨著從開始界限移至結束界限的方向線,逐漸從一行變更為下一行。 根據預設,色彩變更與距離變更成正比;也就是說,開始界限與結束界限之間的距離 30% 有 30% 的色彩,也就是開始界限色彩與結束界限色彩之間的距離 30%。 色彩圖樣會在開始和結束界限之外重複。
您可以呼叫 LinearGradientBrush::SetBlend 物件的 LinearGradientBrush 方法,以自訂色彩和距離之間的關聯性。 例如,假設您將混合位置設定為 {0, 0.5, 1} ,並將混合因數設定為 {0, 0.3, 1}。 然後,開始界限與結束界限之間的距離 50% 會有 30% 的開始界限色彩和結束界限色彩之間的距離。
範例
下列範例會建立線性漸層筆刷、設定其混合,並使用筆刷填滿矩形。 然後,程式碼會取得混合。 然後,可以檢查混合因數和位置,或以某種方式使用。
VOID Example_GetBlend(HDC hdc)
{
Graphics myGraphics(hdc);
// Create a linear gradient brush, and set its blend.
REAL fac[] = {0.0f, 0.4f, 0.6f, 1.0f};
REAL pos[] = {0.0f, 0.2f, 0.8f, 1.0f};
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(100, 0),
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255)); // blue
linGrBrush.SetBlend(fac, pos, 4);
// Use the linear gradient brush to fill a rectangle.
myGraphics.FillRectangle(&linGrBrush, 0, 0, 100, 50);
// Obtain information about the linear gradient brush.
INT blendCount;
REAL* factors = NULL;
REAL* positions = NULL;
blendCount = linGrBrush.GetBlendCount();
factors = new REAL[blendCount];
positions = new REAL[blendCount];
linGrBrush.GetBlend(factors, positions, blendCount);
for(INT j = 0; j < blendCount; ++j)
{
// Inspect or use the value in factors[j].
// Inspect or use the value in positions[j].
}
}
需求
最低支援的用戶端 | Windows XP、Windows 2000 Professional [僅限桌面應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | gdiplusbrush.h (包含 Gdiplus.h) |
程式庫 | Gdiplus.lib |
Dll | Gdiplus.dll |
另請參閱
LinearGradientBrush \(英文\)