IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Fond noir sur images transparentes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 14
    Par défaut Fond noir sur images transparentes
    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

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Par défaut to bitmap n'a pas de couleur (color.Empty)
    Cette absence de couleur se traduit par du noir et non du blanc (qui est une saturation de toutes les couleurs)

    Du devrait donc faire un fill de ton bitmap a la couleur de fond choisie

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 14
    Par défaut
    Bah c'est ce que je fait, je met un fond jaune

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bufferGfx.Clear(Color.FromArgb(255,255,0)); //remplis le bitmap d'un fond jaune
    Mais quand je superpose mon bitmap transparent, les pixels transparents deviennent noirs

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour,

    Il se pourrait qu'il y ai un vieux reste des anciens système.
    Pour le savoir, assures-toi que le pixel du coin supérieur gauche de l'image (coordonné (1,1) pour la class Bitmap) soit de la couleur transparente (donc dans ton cas mauve).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 14
    Par défaut
    Le 1er pixel sur mon image de test est bien mauve.

    J'avoue que cette histoire me laisse perplexe, c'est quand même une fonction assez basique, ça devrais fonctionner comme on l'entend

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    C'est en effet très étrange.

    Autres chose que je viens de voir la méthode "FromFile" que utilise proviens de la classe mère "Image"
    Elle ne fait pas exactement la meme chose que le constructeur de "Bitmap"
    du coup devrait essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mainBitmap = (Bitmap)new System.Drawing.Bitmap(FileName); //charge l'image

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pixel noir sur image
    Par lauretflo dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 20/01/2015, 15h11
  2. Rollover avec superposition fond noir transparent et texte sur une image
    Par altair8080 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/08/2013, 00h32
  3. [Flex4] Fond noir sur le header d'une AdvancedDataGridColumn
    Par vilveq dans le forum Flex
    Réponses: 0
    Dernier message: 02/09/2011, 17h01
  4. toolbar fond transparent sur image
    Par sp2308 dans le forum Débuter
    Réponses: 1
    Dernier message: 19/12/2009, 17h01
  5. Couleur de fond noire avec Image.Save
    Par olibara dans le forum C#
    Réponses: 8
    Dernier message: 11/08/2008, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo