Png Transparence

Messages postés
158
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
- - Dernière réponse : CGSI3
Messages postés
417
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
- 8 déc. 2010 à 19:21
Bonjour, je cherche le moyen de rendre un PNG transparent derrière un autre PNG.

C'est à dire que si le PNG1 est derrière le PNG2, on vois le PNG1 dans la transparence du PNG2.

Aussi, comment faire pour inversé le PNG1 au PNG2 ? (que le PNG1 soit devant le PNG2).
Afficher la suite 

3 réponses

Messages postés
417
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
0
Merci
Bonjour,
Je travail sur les PNG en ce moment, la transparence est lié au canal Alpha.
Un point de l'image en Png est codé sur 4 Bytes dont le dernier le canal alpha. (Red Green Blue Alpha)
Ce dernier byte est codé de 0 à 255 (tu peux faire des dégradés 0=transparent 255=plein)

En VB.NET
Imports System.Drawing.Imaging

Public Image As Bitmap= New Bitmap(PathFile)

Image.LockBits te permet de récupérer le tableau des couleurs des points et de modifier ce canal alpha. (= 4 fois le nombre de points)
Ici s'arrête mes quelques connaissances, mais tu peux surement modifier ce canal avec des logiciels comme GIMP.
Si l'image est transparente, l'ordre dans lequel tu les affichera sur ton support sera alors essentiel (si sela marche).
J'espere t'avoir aidé.
CGSI3
Commenter la réponse de CGSI3
Messages postés
158
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
3
0
Merci
Merci, CGSI3 j'ai compris se que tu voulais me dire.

En fait je créé un moteur graphique 2D et le "hero" (personnage principale, ou autre (voiture) peut se déplacer derrière un objet (je suis dans les colisions la) donc se "hero" se déplace derrière le PNG mais malheureusement on vois l'encadré de se PNG dont la couleur est celle defini par le form1.backcolor et non en transparence malgré image.BackColor = Color.Transparent.

Si j'ai bien compris il faut que je fasse une boucle qui modifie le canal alfa par la couleur du héro et ceci sur tous les pixels et les rétablir quand le héro est plus dans la même location.

Gros bordel quoi...
Commenter la réponse de Guillamue06
Messages postés
417
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
0
Merci
Un pixel dont le canal alpha est a 0 ne s'affichera pas. Donc il suffit de mettre a 0 tous les pixels de l'objet de devant que tu ne veux pas voir s'afficher, mais je ne sais pas si cela marche sur les objets VB.
Essai avec des PNG qui possèdent déja cette modif. (tu peux surement rapidement en trouver sur google)
Bonne Prog CGSI3
Commenter la réponse de CGSI3