[C] Problème de transparence d'une image sur un graphic

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

[C] Problème de transparence d'une image sur un graphic

#1

Message par parazitenew »

Bonjour,

J'ai mis un logo (format ico avec de la transparence) par dessus un GuiCtrlCreateGraphic(), la couleur de fond du graphic est différente de celle du GUI. La couleur de fond qui apparaît derrière le logo est celle du GUI et non du graphic. Problématique.

J'ai lu dans l'aide à propos du graphic que si on voulait superposer un control par dessus il fallait mettre GuiCtrlSetState($GUI_DISABLE), c'est ce que j'ai fait, pour le graphic, puis pour l'icone, puis les deux en même temps et ça n'a pas marché. La couleurs de fond de l'icone était toujours celle du GUI au lieu celle du graphic.

Evidemment les solutions alternatives existent, comme créer une image de la taille du graphic et mettre l'icone par dessus avec Gimp par exemple et l'ajouter en temps que bmp. Mais je veux tout de même comprendre ce problème.

Merci.
Modifié en dernier par parazitenew le sam. 06 juin 2015 01:46, modifié 1 fois.
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#2

Message par sozary »

Je sais pas si j'ai bien compris ton problème, mais si tu veux placer un élément à l'écran tel que ton icône, tu peux utiliser GdiPlus.
Bon je suis pas un pro, mais grâce aux scripts que m'ont fournis les membres du forum, je sais faire plein de choses maintenant :mrgreen: !
Donc le script que je t'ai passé permet à ton icône (que tu places sur un graphique (blanc ici)) de conserver la couleur de transparence de ton graphique, et de ne pas prendre la couleur de la GUI (étant rouge).

En espérant t'avoir aidé!
Fichiers joints
fenetre.rar
(9.94 Kio) Téléchargé 84 fois
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#3

Message par parazitenew »

Merci pour la réponse, mais dans ton script il n'y a aucune référence à l'icone.

Un screenshot qui illustre mon problème.
Fichiers joints
Capture.PNG
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#4

Message par sozary »

Tu veux un résultat comme la photo en annexe?
Si oui je vois pas où est le problème avec mon code...
J'ai fait la même chose avec une image d'arbre à fond transparent et fond ciel, le tout sur une GUI rouge, ce n'est pas ce que tu voulais?
Télécharge le fichier ici (il est trop volumineux pour le site, c'est une belle photo d'arbre :) ).
Fichiers joints
file.png
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#5

Message par mikell »

C'est vrai qu'avec les GUICtrlCreateIcon la transparence c'est un réel problème
Ya que 2 solutions : utiliser GDI+ , ou créer un "fond" au controle en le scotchant sur une gui fille de taille et couleur voulues
► Afficher le texte
ou carrément utiliser l'udf Icons.au3
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#6

Message par sozary »

Mikell, mon script était bon au fait?
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#7

Message par mikell »

Oui, il est très basique et il y manque des trucs mais dans le principe il est bon
Ce que je lui reprocherais c'est juste de ne pas répondre à la question posée : tu fais un GUICtrlCreatePic où tu superposes 2 png, alors que la question parle d'une icone sur un GUICtrlCreateGraphic
Certes ce sont des détails mais ils ne sont pas anodins :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#8

Message par parazitenew »

Bonjour,

J'ai testé la solution de la fenêtre fille. Elle marche, mais ne serait-ce pas lourd pour le script? Ne risquerait-il pas d'y avoir des complications plu tard? Surtout que les 2 GUI partagent les mêmes constantes. Comme le $GUI_EVENT_CLOSE.

J'ai testé le GDIPlus, avec_GDIPlus_GraphicsFillRect(), toujours le même problème, l'icone ne prend pas le fond du rectangle.

J'ai testé l'UDF Icons.au3 que j'ai téléchargé depuis le forum ENG. ça n'a pas marché. Il existe 3 fonctions, celle qui m'intéresse c'est:
_SetIcon($hWnd, $sIcon, $iIndex = 0, $iWidth = -1, $iHeight = -1, $hOverlap = 0)
D'après les paramètres elle devrait prendre en compte les icones lu à partir des dll. Et d'après la description:
► Afficher le texte
La fonction est sensée être écrite comme ceci:
► Afficher le texte
Mais ça ne change rien, j'ai choisi un fond bleu exprès pour qu'il soit visible:
Fichiers joints
Capture1.PNG
Capture1.PNG (6.34 Kio) Vu 2011 fois
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#9

Message par mikell »

Hum bizarre que l'udf Icons.au3 ne marche pas vu qu'elle a été conçue précisément pour résoudre le type de problème que tu évoques. Tu as testé avec des icones de dll système ou juste avec les icones d'une dll custom ?

Pour la gui fille, je ne pense pas que ce soit particulièrement lourd pour le script, tous les controles "classiques" étant en fait des gui filles (directement gérées par windows)
Le seul souci pourrait venir du fait qu'on n'a pas une "vraie" transparence, parce qu'on ne fait que donner à l'icone une couleur de fond identique à celle du GuiCtrlCreateGraphic

Pour les solutions alternatives à base de GDI+ yen a certainement plusieurs qui marcheraient (ex. la solution sozarienne) mais vu que tu n'as pas posté de code testable on ne peut qu'émettre des hypothèses ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#10

Message par parazitenew »

Hum bizarre que l'udf Icons.au3 ne marche pas vu qu'elle a été conçue précisément pour résoudre le type de problème que tu évoques. Tu as testé avec des icones de dll système ou juste avec les icones d'une dll custom ?
J'utilise ma propre dll
Pour les solutions alternatives à base de GDI+ yen a certainement plusieurs qui marcheraient (ex. la solution sozarienne) mais vu que tu n'as pas posté de code testable on ne peut qu'émettre des hypothèses ^^
Premier code:
► Afficher le texte
Deuxième code:
► Afficher le texte
Aucun ne marche.

Je voulais joindre la dll mais l'extension n'est pas autorisée.

edit:
Fichiers joints
a.rar
(74.6 Kio) Téléchargé 61 fois
Modifié en dernier par parazitenew le jeu. 04 juin 2015 23:02, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#11

Message par mikell »

parazitenew a écrit :Je voulais joindre la dll mais l'extension n'est pas autorisée.
Ben change l'extension ou fais un zip ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#12

Message par parazitenew »

mikell a écrit :
parazitenew a écrit :Je voulais joindre la dll mais l'extension n'est pas autorisée.
Ben change l'extension ou fais un zip ^^
C'est fait. J'ai édité le post précédent.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#13

Message par mikell »

Effectivement...
Le problème semble inhérent au GUICtrlCreateIcon donc personnellement je ne vois pas d'autre solution que la gui fille
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#14

Message par parazitenew »

Compris.

Y a-t-il une balise pour dire que le sujet est clos sans pour autant dire que c'est résolu? :D
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de transparence d'une image sur un graphic

#15

Message par mikell »

Oui, balise [C] :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre