[R] Rendre un gif transparent

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

[R] Rendre un gif transparent

#1

Message 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 !
Modifié en dernier par gotcho le mer. 29 oct. 2008 22:37, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#2

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#3

Message 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...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#4

Message 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 :

Code : Tout sélectionner

GUICtrlCreatePic("",-1,-1, 105, 130, $SS_SUNKEN)
par cette ligne :

Code : Tout sélectionner

GUICtrlCreatePic(@ScriptDir & "\vaca19.gif",-1,-1, 105, 130, $SS_SUNKEN)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#5

Message 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 ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#6

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#7

Message 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 ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#8

Message 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).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#9

Message par gotcho »

Mais mon gif n'est pas animé ! :wink:

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...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#10

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#11

Message 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 ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#12

Message par Tlem »

Sans code je ne peut vous aider.
Mais avec ce que je vous ait donné, vous pouvez prendre le temps de chercher. :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#13

Message 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...
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#14

Message 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 !
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Rendre un gif transparent

#15

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rendre un gif transparent

#16

Message 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. :evil:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Rendre un gif transparent

#17

Message 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)
Répondre