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 permettant de modifier les valeurs alpha d’une image. L’exemple de cette rubrique affiche une image semitransparently, mais les données de pixels de 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 elle vous permet de contrôler les pixels individuels dans l’image 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 résultante.

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 de 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 l’image bitmap. Dans la première colonne, alpha a la valeur 0. Dans la dernière colonne, alpha a la valeur 255. Par conséquent, l’image résultante passe d’une transparence totale (sur le bord gauche) à une image 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 .