共用方式為


建立線性漸層

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) 逐漸從紅色變更為藍色的線條。

10s in the points (50, 10) and (200, 10) are not important. 重要的是,這兩個點有相同的第二個座標,連接它們的線條是水平線。 橢圓形和矩形也會隨著水準座標從 0 到 200 逐漸從紅色變更為藍色。

下圖顯示線條、橢圓形和矩形。 請注意,色彩漸層會重複本身,因為水準座標增加超過 200。

此圖顯示填滿線條和橢圓形的水準漸層,以及超過橢圓形的矩形

自訂線性漸層

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

GDI+ 可讓您調整色彩從漸層的一邊緣到另一個邊緣的變化方式。 假設您想要根據下表建立從黑色變更為紅色的漸層筆刷。

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

 

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

下列範例會呼叫 LinearGradientBrush::SetBlend 物件的 LinearGradientBrush 方法,以將三個相對強度與三個相對位置產生關聯。 如上表所示,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) 的線條平行而逐漸變更。

此圖顯示填滿橢圓形和對角線的對角線漸層