Comment : dessiner des lignes opaques et translucides

Lorsque vous dessinez une ligne, vous devez passer un objet Pen à la méthode DrawLine de la classe Graphics. L'un des paramètres du constructeur Pen est un objet Color. Pour dessiner une ligne opaque, affectez au composant alpha de la couleur la valeur 255. Pour dessiner une ligne semi-transparente, affectez au composant alpha une valeur comprise entre 1 et 254.

Lorsque vous dessinez une ligne translucide sur un arrière-plan, la couleur de la ligne se fond aux couleurs de l'arrière-plan. Le composant alpha spécifie la façon dont les couleurs de la ligne et de l'arrière-plan sont mélangées ; les valeurs alpha proches de 0 favorisent les couleurs d'arrière-plan, les valeurs alpha proches de 255 favorisent la couleur de la ligne.

Exemple

L'exemple suivant dessine une bitmap, puis dessine trois lignes qui utilisent la bitmap comme arrière-plan. La première ligne utilise un composant alpha de 255, afin qu'elle soit opaque. Les deuxième et troisième lignes utilisent un composant alpha de 128 et sont donc translucides ; vous pouvez voir l'image d'arrière-plan à travers les lignes. L'instruction qui définit la propriété CompositingQuality entraîne le mélange pour la troisième ligne parallèlement à une correction gamma.

L'illustration suivante montre la sortie du code ci-dessous.

Opaque et translucide

        Dim bitmap As New Bitmap("Texture1.jpg")
        e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height)

        Dim opaquePen As New Pen(Color.FromArgb(255, 0, 0, 255), 15)
        Dim semiTransPen As New Pen(Color.FromArgb(128, 0, 0, 255), 15)

        e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20)
        e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40)

        e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
        e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60)

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height);

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);
Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);

Compilation du code

L'exemple précédent est destiné à une utilisation avec Windows Forms et nécessite PaintEventArgs e, qui est un paramètre du gestionnaire d'événements Paint.

Voir aussi

Tâches

Comment : affecter un arrière-plan transparent à votre contrôle

Comment : créer des Windows Forms transparents

Comment : dessiner avec des pinceaux opaques et translucides

Autres ressources

Fusion alpha de lignes et de remplissages