ImageGadget - Charger une image au format PNG
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
ImageGadget - Charger une image au format PNG
Voilà, j'utilise un imagegadget. je charge une image PNG avec transparence dans celui ci.
Mais il m'affiche mon image, avec du noir à la place de la transparence.
Comment puis je remédier à cela ?
Merci
Mais il m'affiche mon image, avec du noir à la place de la transparence.
Comment puis je remédier à cela ?
Merci
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Purebasic ne charge pas la transparence des images.
C'est quelque chose qui m'énerve pas mal, et si Fred n'ajoute pas ça dans PB4.0, j'ai bien peur de devoir laisser tomber Pure, ça fait plus de 3 ans qu'on demande ça.

C'est là où la connaissance des API fait la différence car créer un masque à partir d'une couleur se fait en deux lignes via les imagelists!
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
y a pas un moyen ?
Genre définir une couleur que l'on veut transparente !
Puis créer une fonction qui va transformer la couleur dite de transparence en couleur de l'écran de fond !
Genre définir une couleur que l'on veut transparente !
Puis créer une fonction qui va transformer la couleur dite de transparence en couleur de l'écran de fond !
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Va voir le message ici avec d'exellents codes de Danilo pour la transparenceProgi1984 a écrit :y a pas un moyen ?
Genre définir une couleur que l'on veut transparente !
Puis créer une fonction qui va transformer la couleur dite de transparence en couleur de l'écran de fond !
Adaptes pour ton besoin
http://forums.purebasic.com/english/vie ... php?t=8781
Purebasic ne charge pas la transparence des images.
C'est quelque chose qui m'énerve pas mal, et si Fred n'ajoute pas ça dans PB4.0, j'ai bien peur de devoir laisser tomber Pure, ça fait plus de 3 ans qu'on demande ça.

C'est là où la connaissance des API fait la différence car créer un masque à partir d'une couleur se fait en deux lignes via les imagelists!
J'aime beaucoup ton "si peu", tu ne dois pas savoir de quoi tu parles 
Le "si peu" bloque "un peu" la réalisation de mon projet, et devoir bidouiller pour quelque chose qui fait parti des trucs de bases...
Et les astuces avec les api, vous vous les garder, merci
Je parlais notamment de charger la couleur transparente de l'image, ce qu'on ne peut évidemment pas faire avec les api, puisqu'elle est contenue dans le fichier image.

Le "si peu" bloque "un peu" la réalisation de mon projet, et devoir bidouiller pour quelque chose qui fait parti des trucs de bases...
Et les astuces avec les api, vous vous les garder, merci

Je parlais notamment de charger la couleur transparente de l'image, ce qu'on ne peut évidemment pas faire avec les api, puisqu'elle est contenue dans le fichier image.
ben oui mais tu comptes sur des gens qui les connaissent pour te faire des libs que tu utiliseras, non?Et les astuces avec les api, vous vous les garder, merci
Tu peux facilement changer la couleur de transparence en la modifiant directement dans le fichier image, c'est juste une information qui dit au prog, ben voilà cette couleur tu me la rends transparente.Je parlais notamment de charger la couleur transparente de l'image, ce qu'on ne peut évidemment pas faire avec les api, puisqu'elle est contenue dans le fichier image.
Pure basic ne le prend pas en compte mais comme je l'ai dis, ce n'est pas compliqué à faire et ça marchera avec les jpeg et les autres formats que gère PB.
Tu comprends maintenant qu'il n'est pas utile d'utiliser spécialement le format PNG pour faire de la transparence!
Progi1984,
Si t'as une image PNG dont tu veux modifier la couleur de fond, passe la moi, je te ferais un exemple!
Je n'ai aucune intention de devoir faire des images spéciales Purebasic pour pouvoir gérer la transparence
Et je n'ai également aucune intention d'utiliser une lib de plus pour faire ce genre de choses qui devraient être nativement dans Pure, et ce depuis longtemps.
ça fait combien de tps que Blitz gère ça ?
S'il y a bien quelque chose que je n'aime pas avec le Pure, c'est que des qu'on utilise les commandes, on a forcément à bidouiller.
Heureusement que le compilateur rattrape tout

Et je n'ai également aucune intention d'utiliser une lib de plus pour faire ce genre de choses qui devraient être nativement dans Pure, et ce depuis longtemps.
ça fait combien de tps que Blitz gère ça ?
S'il y a bien quelque chose que je n'aime pas avec le Pure, c'est que des qu'on utilise les commandes, on a forcément à bidouiller.
Heureusement que le compilateur rattrape tout

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
@Nico, merki beaucoup de ton aide !
Pour l'image, c'est ici : http://gimp4you.eu.org/img/articles/int ... a1-003.png
Pour l'image, c'est ici : http://gimp4you.eu.org/img/articles/int ... a1-003.png
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Cela marche parfaitement avec cette fonction CatchTransparentImage() donné ici http://forums.purebasic.com/english/vie ... php?t=8781
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Il y a pleins de chose que PB ne fait pas et qu'on est obligé de faire en attendant qu'il l'intègre. Je n'ai jamais dit que PB ne devait pas gérer le PNG avec la transparence.
Code : Tout sélectionner
UsePNGImageDecoder()
Procedure Transparent_Image(ID.l,OldColor.l,NewColor.l)
If NewColor=-1
NewColor = GetSysColor_(#COLOR_BTNFACE)
EndIf
UseImage(ID)
himl=ImageList_Create_(ImageWidth(), ImageHeight() , #ILC_COLOR24 | #ILC_MASK, 0, 0)
ImageList_AddMasked_( himl, UseImage(image), OldColor)
index=CreateImage(#PB_Any,ImageWidth(), ImageHeight())
If index
hdc=StartDrawing(ImageOutput())
If hdc
Box(0, 0, ImageWidth(), ImageHeight() , NewColor)
ImageList_Draw_(himl,0,hdc,0,0,#ILD_TRANSPARENT)
StopDrawing()
EndIf
EndIf
ImageList_Destroy_(himl)
ProcedureReturn index
EndProcedure
LoadImage(0,"c:\thumb-final-a1-003.png")
OpenWindow(0,0,0,600,400,#PB_Window_SystemMenu,"")
CreateGadgetList(WindowID(0))
ID_image=Transparent_Image(0,0,-1)
ImageGadget(0,0,0,0,0,UseImage(ID_image))
Repeat
event=WaitWindowEvent()
Until event=#PB_EventCloseWindow
End