Bonjour,

Je souhaite afficher une image bitmap sur une form, et je rencontre un problème avec les transparences.

J'ai cherché un peu sur le net, et j'ai cru comprendre que c'est un bug de GDI+ qui colle un fond noir à la place de la transparence, et qu'il faut donc "composer" l'image dans un bitmap intermédiaire avant de l'afficher pour éviter cela. Soit.
(Je vous laisse le soin de confirmer ou non )

Quoi qu'il en soit, j'ai le même souci quand j'opère sur un bitmap de travail.

Dans le cas présent et pour l'exemple, je travaille sur un PNG-24, avec une couleur mauve comme chroma key à rendre transparente. Pour résumer j'effectue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
mainBitmap = (Bitmap)System.Drawing.Bitmap.FromFile(FileName); //charge l'image
mainBitmap.MakeTransparent(Color.FromArgb(255,0,255)); //rend le mauve transparent
 
buffer = new Bitmap(Width, Height); //crée un bitmap de travail
bufferGfx = Graphics.FromImage(buffer);
 
bufferGfx.Clear(Color.FromArgb(255,255,0)); //remplis le bitmap d'un fond jaune
bufferGfx.DrawImage(mainBitmap, 0,0); //copie mon image sur la bitmap de travail
Par cette méthode j'obtiens du noir qui couvre mon fond jaune à la place d'une transparence. Que ce soit en affichant le bitmap de travail sur ma form ou en le sauvegardant dans un fichier.

Donc si quelqu'un à un tuyau sur le sujet je suis preneur, d'autant plus que si j'ajoute un buffer.MakeTransparent(Color.FromArgb(0,0,0)) à la fin, le noir passe bien transparent (mais du coup efface également le fond jaune, donc ça ne va pas ), c'est à n'y rien comprendre.

Je vous fait un dessin si vous voulez