[R] Suppression d'image créée avec GDIPlus

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
tyler911
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 01 févr. 2012 13:11
Status : Hors ligne

[R] Suppression d'image créée avec GDIPlus

#1

Message par tyler911 »

Hello,

je me décide à poster car je n'arrive pas à solutionner mon problème, ça ne doit pas pourtant pas être compliqué mais je ne parvient pas à trouver de solution :/

Je souhaite simplement afficher trois smileys, grisés à la base, qui changent de couleur en fonction des interventions utilisateurs. Créer les smileys ne pose aucun soucis, mais remplacer un smiley grisé par un smiley de couleur me pose problème.

Le question est donc la suivante :Comment supprimer une image créée comme suit.

Code : Tout sélectionner

$IMG_SRC_SMILE_QUIET = _GDIPlus_ImageLoadFromFile($PATH_PICS & "\gui_status_quiet.png")
$IMG_SRC_SMILE_GREEN = _GDIPlus_ImageLoadFromFile($PATH_PICS & "\gui_status_green.png")
$IMG_SRC_SMILE_RED = _GDIPlus_ImageLoadFromFile($PATH_PICS & "\gui_status_red.png")
$IMG_SRC_SMILE_HIDE = _GDIPlus_ImageLoadFromFile($PATH_PICS & "\gui_status_empty.png")

$IMG_SMILE_QUIET = _GDIPlus_GraphicsDrawImageRectRect($GUI_OBJECT, $IMG_SRC_SMILE_QUIET, 0, 0, 22, 22, 26, 75, 22, 22)
$IMG_SMILE_GREEN = _GDIPlus_GraphicsDrawImageRectRect($GUI_OBJECT, $IMG_SRC_SMILE_GREEN, 0, 0, 22, 22, 70, 75, 22, 22)
$IMG_SMILE_RED = _GDIPlus_GraphicsDrawImageRectRect($GUI_OBJECT, $IMG_SRC_SMILE_RED, 0, 0, 22, 22, 114, 75, 22, 22)
 
Sachant que le but est de les faire changer d'état de nombreuses fois.
J'ai testé _GDIPlus_ImageDispose mais non, rien à faire.

Le truc m'échappe !
Merci
Modifié en dernier par tyler911 le ven. 17 févr. 2012 11:35, modifié 1 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2102
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [...] Suppression d'image créée avec GDIPlus

#2

Message par TommyDDR »

Aide a écrit :Create an image object based on a file
Étrange que _GDIPlus_ImageDispose ne marche pas.

Mais d'un autre côté :
Aide a écrit :Success: Handle to the new image object
Comme l'info n'est pas présente dans l'aide et que vous avez cherché de votre coté :

Les handles d'objet se libèrent avec

Code : Tout sélectionner

_WinAPI_DeleteObject($handle)
Edit : Par contre, je ne sais pas si elles disparaitrons du graphic.

(Pourquoi passer par un graphic ?, un GUICtrlCreatePic + GUICtrlSetImage ne convenait pas ?)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
tyler911
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 01 févr. 2012 13:11
Status : Hors ligne

Re: [...] Suppression d'image créée avec GDIPlus

#3

Message par tyler911 »

Oui en effet je n'arrive pas à comprendre de fonctionnement "_GDIPlus_ImageDispose" car avec :

Code : Tout sélectionner

_GDIPlus_ImageDispose($IMG_SRC_SMILE_GREEN)
_WinAPI_DeleteObject($IMG_SRC_SMILE_GREEN)
ConsoleWrite(VarGetType($IMG_SRC_SMILE_GREEN)) ; Renvoie toujours "Ptr" !!!
 
$IMG_SRC_SMILE_GREEN reste du type "Ptr" (!) et l'image ne disparait pas...
Sachant, en plus, que je vais devoir réutiliser cette image...aïe ^^

EDIT :

Ça y est ça marche, mais pas avec GDIplus, j'ai suivi ta suggestion et ça donne :

Code : Tout sélectionner

; Création des images
$IMG_SRC_SMILE_QUIET = GUICtrlCreatePic($PATH_PICS & "\gui_status_quiet.jpg", 26, 75, 22, 22)
$IMG_SRC_SMILE_GREEN = GUICtrlCreatePic($PATH_PICS & "\gui_status_green.jpg", 70, 75, 22, 22)
$IMG_SRC_SMILE_RED = GUICtrlCreatePic($PATH_PICS & "\gui_status_red.jpg", 114, 75, 22, 22)

; Switch affichage ou non...
GUICtrlSetState($IMG_SRC_SMILE_QUIET, $GUI_HIDE)
GUICtrlSetState($IMG_SRC_SMILE_GREEN, $GUI_SHOW)
GUICtrlSetState($IMG_SRC_SMILE_RED, $GUI_HIDE)
 
Facile comme la tarte ^^
Un seul regret, il n'est pas dans ce cas possible d'utiliser du png...

Merci Tommy
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2102
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Suppression d'image créée avec GDIPlus

#4

Message par TommyDDR »

Je pense qu'il est normal que le type soit toujours un ptr, _WINAPI_DeleteObject ne fait que détruire l'objet qui se situe à l'adresse du pointeur.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre