Page 1 sur 1
[R] Rendre un gif transparent
Posté : mer. 29 oct. 2008 21:46
par gotcho
Bonjour,
j'ai pas mal cherché sur ce forum et sur son homologue anglais, et j'ai suivi les procédures pour afficher correctement un gif transparent, mais je n'y arrive toujours pas.
Voici le code :
Code : Tout sélectionner
#Region ### START Koda GUI section ### Form=C:\Users\---\Desktop\---\ressources\ec_main.kxf
$ec_main = GUICreate("---", 310, 590, 205, 141, -1)
$Pic3 = GUICtrlCreatePic("enligne.gif", 8, 104, 26, 28, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Pic4 = GUICtrlCreatePic("horsligne.gif", 8, 135, 26, 28, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$bgauche = GUICtrlCreatePic("nouveau_contact.jpg", 5, 532, 147, 35, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$bdroit = GUICtrlCreatePic("info.jpg", 158, 532, 147, 36, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$background = GUICtrlCreatePic("back.bmp", 0, 0, 309, 589, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetState ( $background, $GUI_DISABLE )
$aff_pseudo = GUICtrlCreateLabel("Pas de pseudo...", 12, 60, 280, 31)
GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x013b88)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetCursor(-1, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Les deux gifs du début comportent une partie transparente, qui malheureusement s'affiche en blanc.
Si je les mets après l'image "back.bmp", qui est un fond de remplissage, ils sont cachés par cette même image. Le fond de remplissage, s'il est placé en premier, efface (il est par dessus) toutes les images, mais pas le label...
Quelqu'un aurait-il une idée ? Merci encore par avance !
Re: [..] Rendre un gif transparent
Posté : mer. 29 oct. 2008 22:14
par Tlem
La coloration syntaxique du code est réservée aux forums :
- - Exemples de script
- Fonctions et UDF
- Tutoriels
Merci.
Pour votre problème, regardez par ici :
http://www.autoitscript.fr/forum/viewto ... f=6&t=1134
Re: [..] Rendre un gif transparent
Posté : mer. 29 oct. 2008 22:37
par gotcho
Désolé, mais le code du lien ne fonctionne pas...
Je ne vois toujours pas comment faire. Le problème qui se présente à moi :
-Gérer l'ordre des calques d'images
-Gérer la transparence d'un gif...
Re: [..] Rendre un gif transparent
Posté : mer. 29 oct. 2008 23:21
par Tlem
Après plusieurs tests, j'ai constaté que le code ne fonctionnait pas.
Effectivement, il contenait une petite erreur que je viens de rectifier.
Il suffit de remplacer cette ligne :
par cette ligne :
Code : Tout sélectionner
GUICtrlCreatePic(@ScriptDir & "\vaca19.gif",-1,-1, 105, 130, $SS_SUNKEN)
Re: [..] Rendre un gif transparent
Posté : mer. 29 oct. 2008 23:44
par gotcho
Désolé, ça ne marche toujours, pas, pourtant j'ai bien déplacé les fichiers joints dans les répertoires...
Ne serait-il pas plus simple de m'expliquer simplement comment activer la transparence gif et gérer les ordres de claques ?
Re: [..] Rendre un gif transparent
Posté : mer. 29 oct. 2008 23:50
par Tlem
Et la DLL ?
Vous avez bien fait la manipulation décrite ?
- - Récupéré le fichier GIF89.txt.
- Le renommer en GIF89.dll et le placer dans C:\Windows\System32
- Enregistré la DLL avec Regsvr32.exe.
Sur mes 2 PC sous XP cela fonctionne.
Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 00:02
par gotcho
La c'est bon, mais l'image affichée a un fond bleu foncé à la place de la transparence.
Et il doit bien y avoir un moyen de régler la transparence sans passer par une dll, non ?
Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 00:23
par Tlem
En ce qui me concerne tout fonctionne correctement.
Et pour la transparence sans la dll pour un gif animé, c'est non. Il faut cette dll.
Il est possible de gérer la transparence sur une image fixe sans la dll (du moins je crois), mais pour les gif animés ce n'est pas possible (pour l'instant).
Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 00:30
par gotcho
Mais mon gif n'est pas animé !
C'est un gif simple, statique, avec une partie transparente !
J'ai trouvé cette ressource :
http://www.autoitscript.fr/forum/viewto ... ?f=6&t=680
Mais j'ai un peu de mal à la comprendre...
Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 00:45
par Tlem
En récupérent le gif de Mr Claveau, vous pouvez faire ceci :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
$HWnd = GUICreate("GIF", 104, 129, -1, -1, $WS_POPUP,$WS_EX_LAYERED)
GUICtrlCreatePic(@ScriptDir & "\vaca19.gif",-1,-1, 105, 130, $SS_SUNKEN)
GUISetState()
Sleep(5000)
Exit
Si vous voulez utiliser votre gif, alors adaptez la taille de l'image.
Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 01:01
par gotcho
Raaah on y est presque !
Mais comment l'intégrer ensuite dans une fenêtre déjà crée, qui comporte une image de fond, par dessus laquelle je vais incruster le gif, qui devra être transparent là où il le doit ?
Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 01:21
par Tlem
Sans code je ne peut vous aider.
Mais avec ce que je vous ait donné, vous pouvez prendre le temps de chercher.

Re: [..] Rendre un gif transparent
Posté : jeu. 30 oct. 2008 17:05
par gotcho
J'ai eu beau retourner le problème dans tous les sens, je n'ai rien :
Code : Tout sélectionner
#Region ### START Koda GUI section ### Form=C:\Users\---\Desktop\---\ressources\ec_main.kxf
$ec_main = GUICreate("---", 310, 590, 205, 141)
$statutami1 = GUICtrlCreatePic("enligne.gif", 8, 107, 0, 0, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS, $SS_SUNKEN))
$statutami2 = GUICtrlCreatePic("horsligne.gif", 8, 132, 0, 0, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$bgauche = GUICtrlCreatePic("nouveau_contact.jpg", 5, 532, 147, 35, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$bdroit = GUICtrlCreatePic("info.jpg", 158, 532, 147, 36, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetCursor(-1, 0)
$background = GUICtrlCreatePic("back.bmp", 0, 0, 309, 589, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetState ( $background, $GUI_DISABLE )
$aff_pseudo = GUICtrlCreateLabel("Pas de pseudo...", 12, 60, 280, 31)
GUICtrlSetFont(-1, 14, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x013b88)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetCursor(-1, 0)
Dim $tab_amis[16]
Global $i = 0
While $i<16
$tab_amis[$i] = GUICtrlCreateLabel("", 30, 107+$i*25, 280, 17)
GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetCursor(-1, -1)
$i=$i+1
WEnd
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Si je place l'image de fond (background) en premier, les autres images ne s'affichent pas. En revanche, les labels s'affichent dans tous les cas.
Les deux premières images sont des gifs statiques, comportant une partie transparente. Pourtant, cette partie transparente s'affiche en blanc...
C'est bien compliqué de gérer un gif...
Re: [..] Rendre un gif transparent
Posté : ven. 31 oct. 2008 14:27
par gotcho
Je fais un petit up, à tout hasard...
Et j'en profite pour préciser un peu mieux.
Admettez deux images, une bmp, et un gif partiellement transparent, non animé.
Je veux placer le gif par dessus le bmp, et que la transparence soit gérée. Le tout est affiché dans une fenêtre normale.
Merci d'avance !
Re: [..] Rendre un gif transparent
Posté : ven. 31 oct. 2008 18:53
par ani
bonjour
la documentation nous : a écrit :To have a transparent picture it is needed to create the GUI window with WS_EX_LAYERED extended style.
Pour avoir un image transparente il est necessaire de creer un Gui window avec l'extention du style
WS_EX_LAYERED
c'est une traduction grosomodo version ani
Ce qui donne normalement :
$ec_main = GUICreate("---", 310, 590, 205, 141,-1,$WS_EX_LAYERED)
Sinon regarde la documentation sur
GUICtrlCreatePic , il y a 3 exemple.
Re: [..] Rendre un gif transparent
Posté : ven. 31 oct. 2008 22:37
par Tlem
@gotcho
Évitez les Up en moins de 24Heures. Normalement on attend quelques jours pour ce genre de chose.
Si personne ne vous à répondu, c'est que personne n'avait la réponse, ou que celle-ci était sous vos yeux.
Le code que je vous ai donné me semblait quand même des plus simple et des plus explicite car il tenait sur 3 lignes dont 2 principales (Je ne compte pas les includes et la pause du script).
Les 2 lignes principale était la création de la GUI puis l'affichage de l'image. Vous auriez dut reprendre le même code et l'adapter à vos besoins.

Re: [..] Rendre un gif transparent
Posté : dim. 16 nov. 2008 14:57
par gotcho
En effet cela marche.
Merci beaucoup !
En fait, il faut faire très attention au fait que les définitions de gifs doivent bien être faites en dernier, sinon, elles empêchent l'affichage des autres éléments (je ne sais pas pourquoi, peut-être parce que l'on change de GUI)
(désolé pour les remerciements... tardifs ! Et le UP)