共用方式為


建立線性漸層

GDI+ 提供水平、垂直和對角線線性漸層。 根據預設,線性漸層中的色彩會統一變更。 不過,您可以自定義線性漸層,讓色彩以非統一的方式變更。

水平線性漸層

下列範例使用水平線性漸層筆刷來填滿線條、橢圓形和矩形:

LinearGradientBrush linGrBrush(
   Point(0, 10),
   Point(200, 10),
   Color(255, 255, 0, 0),   // opaque red
   Color(255, 0, 0, 255));  // opaque blue

Pen pen(&linGrBrush);

graphics.DrawLine(&pen, 0, 10, 200, 10);
graphics.FillEllipse(&linGrBrush, 0, 30, 200, 100);
graphics.FillRectangle(&linGrBrush, 0, 155, 500, 30);

LinearGradientBrush 建構函式會收到四個參數:兩個點和兩個色彩。 第一個點 (0, 10) 與第一個色彩 (紅色), 第二個點 (200, 10) 與第二個色彩 (藍色) 相關聯。 如您所預期,從 (0, 10) 到 (200, 10) 的線條逐漸從紅色變更為藍色。

點 (50, 10) 和 (200, 10) 中的 10 並不重要。 重要的是,這兩個點具有相同的第二個座標,連接它們的線條是水平線。 橢圓形和矩形也會逐漸從紅色變更為藍色,因為水準座標從0到200。

下圖顯示線條、橢圓形和矩形。 請注意,當水平座標超過 200 時,色彩漸層會重複出現。

圖顯示填滿線條和橢圓形的橫向漸層,以及長於橢圓形的矩形

自定義線性漸層

在上述範例中,當您從水準座標 0 移至 200 的水準座標時,色彩元件會以線性方式變更。 例如,第一個座標位於0和200之間的中點的點,其藍色元件將位於0和255之間的中點。

GDI+ 可讓您調整色彩從漸層的一個邊緣到另一個邊緣的變化。 假設您想要創建一個漸層筆刷,使顏色根據下表從黑色逐漸過渡到紅色。

水平座標 RGB 元件
0 (0, 0, 0)
40 (128, 0, 0)
200 (255, 0, 0)

 

請注意,當水準座標只有 0 到 200 的 20% 時,紅色元件會處於半強度。

下列範例會呼叫 LinearGradientBrush 物件的 LinearGradientBrush::SetBlend 方法,將三個相對強度與三個相對位置產生關聯。 如上表所示,0.5 的相對強度與0.2的相對位置相關聯。 程序代碼會以漸層筆刷填滿橢圓形和矩形。

LinearGradientBrush linGrBrush(
   Point(0, 10),
   Point(200, 10),
   Color(255, 0, 0, 0),     // opaque black 
   Color(255, 255, 0, 0));  // opaque red

REAL relativeIntensities[] = {0.0f, 0.5f, 1.0f};
REAL relativePositions[]   = {0.0f, 0.2f, 1.0f};

linGrBrush.SetBlend(relativeIntensities, relativePositions, 3);

graphics.FillEllipse(&linGrBrush, 0, 30, 200, 100);
graphics.FillRectangle(&linGrBrush, 0, 155, 500, 30);

下圖顯示產生的橢圓形和矩形。

圖例顯示填滿橢圓形和比橢圓形更長的矩形的水準漸層

對角線線性漸層

上述範例中的漸層是水平的,也就是說,當您沿著任何水平線移動時,顏色會逐漸變化。 您也可以定義垂直漸層和對角漸層。 下列程式代碼會將點 (0, 0) 和 (200, 100) 傳遞至 LinearGradientBrush 建構函式。 藍色與 (0, 0) 相關聯,而綠色與 (200, 100) 相關聯。 線條(手寫筆寬度為 10)和橢圓形會填滿線性漸層筆刷。

LinearGradientBrush linGrBrush(
   Point(0, 0),
   Point(200, 100),
   Color(255, 0, 0, 255),   // opaque blue
   Color(255, 0, 255, 0));  // opaque green

Pen pen(&linGrBrush, 10);

graphics.DrawLine(&pen, 0, 0, 600, 300);
graphics.FillEllipse(&linGrBrush, 10, 100, 200, 100);

下圖顯示線條和橢圓。 請注意,橢圓中的顏色會隨著您沿著任何與通過 (0, 0) 和 (200, 100) 的線平行的方向移動而逐漸改變。

插圖顯示對角漸層填滿橢圓形和一條對角線