共用方式為


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 \(英文\)

LinearGradientBrush::GetBlendCount

LinearGradientBrush::SetBlend