共用方式為


設定個別圖元的 Alpha 值

使用色彩矩陣在影像中設定 Alpha 值主題會顯示變更影像 Alpha 值的不具破壞性方法。 該主題中的範例會以半透明方式轉譯影像,但點陣圖中的圖元資料不會變更。 Alpha 值只會在轉譯期間改變。

下列範例示範如何變更個別圖元的 Alpha 值。 範例中的程式碼實際上會變更 Bitmap 物件中的 Alpha 資訊。 此方法比使用色彩矩陣和 ImageAttributes 物件慢很多,但可讓您控制點陣圖中的個別圖元。

INT iWidth = bitmap.GetWidth();
INT iHeight = bitmap.GetHeight();
Color color, colorTemp;
for(INT iRow = 0; iRow < iHeight; iRow++)
{
   for(INT iColumn = 0; iColumn < iWidth; iColumn++)
   {
      bitmap.GetPixel(iColumn, iRow, &color);
      colorTemp.SetValue(color.MakeARGB(
         (BYTE)(255 * iColumn / iWidth), 
         color.GetRed(),
         color.GetGreen(),
         color.GetBlue()));
      bitmap.SetPixel(iColumn, iRow, colorTemp);
   }
}
// First draw a wide black line.
Pen pen(Color(255, 0, 0, 0), 25);
graphics.DrawLine(&pen, 10, 35, 200, 35);
// Now draw the modified bitmap.
graphics.DrawImage(&bitmap, 30, 0, iWidth, iHeight);

下圖顯示產生的影像。

圖例顯示從左至右、在黑色矩形上取得更不透明的影像

上述程式碼範例會使用巢狀迴圈來變更點陣圖中每個圖元的 Alpha 值。 針對每個圖元, Bitmap::GetPixel 會取得現有的色彩, Color::SetValue 會建立包含新 Alpha 值的暫時色彩,然後 Bitmap::SetPixel 會設定新的色彩。 Alpha 值是根據點陣圖的資料行來設定。 在第一個資料行中,Alpha 設定為 0。 在最後一個資料行中,Alpha 設定為 255。 因此,產生的影像會從左邊緣的完全透明 () 到右邊緣 (完全不透明) 。

Bitmap::GetPixelBitmap::SetPixel 可讓您控制個別圖元值。 不過,使用 Bitmap::GetPixelBitmap::SetPixel 的速度不如使用 ImageAttributes 類別和 ColorMatrix 結構一樣快。