Comment : dessiner avec des pinceaux opaques et translucides

Lorsque vous remplissez une forme, vous devez passer un objet Brush à l'une des méthodes de remplissage de la classe Graphics. Le paramètre du constructeur SolidBrush est un objet Color. Pour remplir une forme opaque, affectez au composant alpha de la couleur la valeur 255. Pour remplir une forme semi-transparente, affectez au composant alpha une valeur comprise entre 1 et 254.

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

Exemple

L'exemple suivant dessine une bitmap, puis remplit trois ellipses qui chevauchent la bitmap. La première ellipse utilise un composant alpha de 255 et est donc opaque. Les deuxième et troisième ellipses utilisent un composant alpha de 128 et sont donc translucides ; vous pouvez voir l'image d'arrière-plan à travers les ellipses. L'appel qui définit la propriété CompositingQuality commande une fusion pour la troisième ellipse avec 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, 50, 50, bitmap.Width, bitmap.Height)

        Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
        Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))

        e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
        e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)

        e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
        e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)

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

SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);

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 de PaintEventHandler.

Voir aussi

Tâches

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

Comment : dessiner des lignes opaques et translucides

Comment : créer des Windows Forms transparents

Autres ressources

Graphiques et dessins dans les Windows Forms

Fusion alpha de lignes et de remplissages