Partager via


Définition des valeurs alpha de pixels individuels

La rubrique Utilisation d’une matrice de couleurs pour définir des valeurs alpha dans des images montre une méthode non destructrice pour modifier les valeurs alpha d’une image. L’exemple de cette rubrique affiche une image semi-transparence, mais les données de pixels dans la bitmap ne sont pas modifiées. Les valeurs alpha sont modifiées uniquement pendant le rendu.

L’exemple suivant montre comment modifier les valeurs alpha de pixels individuels. Le code de l’exemple modifie en fait les informations alpha dans un objet Bitmap . L’approche est beaucoup plus lente que l’utilisation d’une matrice de couleurs et d’un objet ImageAttributes , mais vous permet de contrôler les pixels individuels dans la bitmap.

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);

L’illustration suivante montre l’image obtenue.

illustration montrant une image qui devient plus opaque de gauche à droite, sur un rectangle noir

L’exemple de code précédent utilise des boucles imbriquées pour modifier la valeur alpha de chaque pixel dans la bitmap. Pour chaque pixel, Bitmap::GetPixel obtient la couleur existante, Color::SetValue crée une couleur temporaire qui contient la nouvelle valeur alpha, puis Bitmap::SetPixel définit la nouvelle couleur. La valeur alpha est définie en fonction de la colonne de la bitmap. Dans la première colonne, alpha a la valeur 0. Dans la dernière colonne, alpha a la valeur 255. Ainsi, l’image résultante passe de entièrement transparent (sur le bord gauche) à entièrement opaque (sur le bord droit).

Bitmap::GetPixel et Bitmap::SetPixel vous permettent de contrôler les valeurs de pixel individuelles. Toutefois, l’utilisation de Bitmap::GetPixel et Bitmap::SetPixel n’est pas aussi rapide que l’utilisation de la classe ImageAttributes et de la structure ColorMatrix .