Page 1 sur 1

[..] Affichage d'image sur une form

Posté : mer. 08 oct. 2008 12:32
par Axxcat
Bonjour

J'ai créer une form avec Koda, elle contiens 2 images crées avec la commande

Code : Tout sélectionner

Global $Pict = GUICtrlCreatePic("", 8, 72, 260, 230, $SS_CENTERIMAGE)
Global $PictMod = GUICtrlCreatePic("", 264, 72, 260, 230, $SS_CENTERIMAGE)
Lorsque j'assigne une image à mon contrôle, les 2 images se superposent, et je voit l'une a travers l'autre.

Code : Tout sélectionner

GUICtrlSetImage ($Pict,$WorkRefDir & $ScreenRef)
GUICtrlSetImage ($PictMod,$WorkRefDir & $ScreenRefm)
Les images sont en bmp.
Refaire un GUICtrlCreatePic par dessus $PictMod n'a pas l'aire de fonctionner?
Avez vous déjà rencontré ce problème?

Merci

Re: Affichage d'image sur une form

Posté : mer. 08 oct. 2008 14:12
par Axxcat
J'ai remarqué que l'ancienne image disparait si on passe une autre fenêtre sur ma form.

J'ai dont fait un

Code : Tout sélectionner

    GUISetState(@SW_HIDE)
    GUISetState(@SW_SHOW)
Et cela fonctionne mais cela fat clignoter ma fenêtre!

Il doit y avoir une fonction de mise a jours des graphiques que j'ai du loupé.

Re: [..] Affichage d'image sur une form

Posté : mer. 08 oct. 2008 16:04
par timmalos
Peut etre qu'un simple GUICtrlSetState($Pict,@SW_HIDE) avant de mettre la 2eme image suffit?

Re: [..] Affichage d'image sur une form

Posté : mer. 08 oct. 2008 22:01
par Tlem
La fonction GUICtrlCreatePic comme son nom l'indique, attribue une image à un contrôle.

Si vous souhaitez attribuer une autre image à ce contrôle au cours de votre script, utilisez la fonction au moment ou il faut le faire et non lors de la création de l'interface graphique.

Utilisez un premier GUICtrlCreatePic lors de la création de la GUI (pour attribuer l'image de départ) puis en fonction de l'action qui doit entraîner le changement de cette image, utilisez GUICtrlSetImage pour la nouvelle image.

Re: [..] Affichage d'image sur une form

Posté : jeu. 09 oct. 2008 14:55
par Axxcat
Merci a tous les deux

La solution de timmalos ne fonctionne pas. (Je l'ai fait juste pour vérifier)

Code : Tout sélectionner

    GUICtrlSetState($Pict,@SW_HIDE)
    GUICtrlSetState($PictMod,@SW_HIDE)

    GUICtrlSetImage ($Pict,$WorkRefDir & $ScreenRef)
    GUICtrlSetImage ($PictMod,$WorkRefDir & $ScreenRefm)
Et pour celle de Tlem qui il est vrait serait une solution propre, elle plante et n'affiche rien du tout. Je pense que c'est parce que les deux CtrlPic se retrouvent l'un sur l'autre. Il faut donc supprimer au préalable Le CtrlPict mais j'ai trouver des CtrlDestroy pour tous les control sauf le pic!

Cette solution apporte un autre problème si je change mon interface graphique qui est décrite en amont de mon programme (exemple je déplace l'image) il faut alors que je change le code partout ou je met a jours cette image! Ce qui n'est pas pratique.

En tous cas merci de votre aide

Re: [..] Affichage d'image sur une form

Posté : ven. 10 oct. 2008 01:21
par Tlem
Je crois que vous n'avez pas très bien compris mes explications.
Voici un exemple concret de ce que j'ai dit :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 239, 229, 193, 125)
$Pic1 = GUICtrlCreatePic("", 8, 8, 220, 172, $SS_CENTERIMAGE)
$Button1 = GUICtrlCreateButton("Image 1", 8, 192, 70, 25, 0)
$Button2 =  GUICtrlCreateButton("Image 2", 80, 192, 70, 25, 0)
$Button3 = GUICtrlCreateButton("Image 3", 152, 192, 70, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        
        Case $Button1
            GUICtrlSetImage ($Pic1,"C:\WINDOWS\winnt.bmp")
        
        Case $Button2
            GUICtrlSetImage ($Pic1,"C:\WINDOWS\Plume.bmp")

        Case $Button3
            GUICtrlSetImage ($Pic1,"C:\WINDOWS\Zapotec.bmp")

    EndSwitch
WEnd