[R] GUICtrlCreatePic + création d'un point en mouvement

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
cortexx
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 26 juil. 2010 14:24
Status : Hors ligne

[R] GUICtrlCreatePic + création d'un point en mouvement

#1

Message par cortexx »

Bonjour,

Après de multiple recherche et de test, je ne parviens pas à résoudre un problème et j'en appel à votre aide.
Je cherche à créer un point qui se déplace sur une image (pour sa pas de problème), le soucis c'est quand le point se déplace il reste des résidus de sont passage.
J'avais résolu en partie le problème en actualisant l'image avec le point se déplacent. Mais le problème c'est que j'ai d'autres points (cela fixe) qui disparaisse et sa me dérange de les redessiner à chaque fois (vu le nombre sa prend beaucoup trop de ressource et sa deviens très lent).

Je pense que le mieux serait d'avoir l'image en arrière plan (background) et de désiner le ou les point sur une espèce de calque.
Voici un bout de code amènagé pour visualisé mon problème, il vous faut juste ajouter une image de 1024 x 768 (nommé : Plan.jpg) dans le même dossier que le fichier Au3.

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)

Global $GUI, $Count = 0, $background

$GUI = GUICreate("Plan", 1024, 768)
GUISetOnEvent($GUI_EVENT_CLOSE, "WindowClose")

$background = GUICtrlCreatePic("Plan.jpg", 0, 0, 1024, 768)

GUISetState()

AdlibRegister('_RefreshDot', 500)

While 1
    Sleep(100)
WEnd

Func _RefreshDot()
    _GDIPlus_Startup()
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
    Local $Brush = _GDIPlus_BrushCreateSolid(0xFFFF0000)
    Local $Pen = _GDIPlus_PenCreate(0xFFFFFFFF)
    Local $X = 100 + $Count
    Local $Y = 100 + $Count
    _GDIPlus_GraphicsFillEllipse($hGraphic, $X, $Y, 6, 6, $Brush)
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $X, $Y, 6, 6, $Pen)
    _GDIPlus_Shutdown()
    $Count += 1
EndFunc

Func WindowClose()
    Exit
EndFunc
Modifié en dernier par cortexx le mer. 26 sept. 2012 09:39, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] GUICtrlCreatePic + création d'un point en mouvement

#2

Message par Iste »

Vous n'avez effectivement pas le choix de tout repeindre. (voir tout les tutos du site du zéro sur tout ce qui touche aux sujet)
► Afficher le texte
il serait également de bon gout d'appeler les fonctions xxxDispose sur vos objets.

Pour le scintillement, voir du coté du double buffering. Comme c'est un sujet tres lourdement abordé sur la toile et que AutoIt n'est pas orienté pour ce genre de code, je vous laisse vous informer sur google pour plus d'info.
Signez ici
Avatar du membre
cortexx
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 26 juil. 2010 14:24
Status : Hors ligne

Re: [..] GUICtrlCreatePic + création d'un point en mouvement

#3

Message par cortexx »

Merci pour c'est précision, je vais faire mes recherches dans la direction que tu ma proposé.

Par contre tu a mise à jour le mon code et je l'ai testé, mais l'image de fond n'apparait pas .... normal ?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] GUICtrlCreatePic + création d'un point en mouvement

#4

Message par Iste »

Oui c'est normal, ayant testé cela vite fait au boulot je n'ai meme pas remarqué l'image ^^' (qui ne s'affiche pas n'étant pas présente sur mon pc)

Pour cela, il vous faudra redessiner votre image, soit en updatant l'objet créé par GUICtrlCreatePic (a tester) soit en dessinant directement l'image grace a gdi+
Signez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] GUICtrlCreatePic + création d'un point en mouvement

#5

Message par mikell »

C'est un poil hors-sujet concernant le script posté, mais en plein dedans pour le titre du sujet
► Afficher le texte
" 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
cortexx
Niveau 2
Niveau 2
Messages : 27
Enregistré le : lun. 26 juil. 2010 14:24
Status : Hors ligne

Re: [..] GUICtrlCreatePic + création d'un point en mouvement

#6

Message par cortexx »

Merci à vous deux, vous m'avez donné deux pistes qui sont prometeuses.
Je vais faire des recherches plus avancé dans le GDI+ et j'ai testé ton code mikell sa fonctionne bien (mis à part un léger cintillement du point .. pas grave), je vais aussi m'en inpiré pour finir mon code.

PS : je vois que je peux compter sur la communauté AutoIT Fr pour trouver de bonne idée :D
Répondre