[R] Pb de clonage GDI+

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

[R] Pb de clonage GDI+

#1

Message par sozary »

Bonjour!!
J'ai suivi le tutoriel sur GDI+ du forum, mais je n'ai pas réussi à déplacer un élément à l'écran avec _GDIPlus_BitmapCloneArea!!
Voici mon code!

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
_GDIPlus_Startup()
Global $position[2] = [0, 0]
HotKeySet("{DOWN}", "_Down")
$pPerso = @ScriptDir & "\cercle.png"
$hImage = _GDIPlus_BitmapCreateFromFile($pPerso)
Global $Form1 = GUICreate("Form1", 615, 437, 426, 378)
GUISetState(@SW_SHOW)
$graphHdl = _GDIPlus_GraphicsCreateFromHWND($Form1)
_GDIPlus_GraphicsClear($graphHdl, 0xFF9EFD38)
$hBitmap = _GDIPlus_GraphicsDrawImageRect($graphHdl, $hImage, $position[0], $position[1], 15, 15)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
            _GDIPlus_GraphicsDispose($graphHdl)
            _GDIPlus_BitmapDispose($hBitmap)
            _GDIPlus_BitmapDispose($hClone)
            _GDIPlus_Shutdown()

    EndSwitch
WEnd

Func _Down()
    $position[1] += 15
    $hClone = _GDIPlus_BitmapCloneArea($hBitmap, $position[0], $position[1], 15, 15)
EndFunc   ;==>_Down
 
Fichiers joints
cercle.png
cercle.png (7.2 Kio) Vu 1199 fois
Modifié en dernier par sozary le mer. 01 avr. 2015 22:29, modifié 1 fois.
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] Pb de clonage GDI+

#2

Message par A2Energie »

Bonjour,

Je suis pas sure totalement mais à confirmer.
tu copie (non pas clown) ton image mais ne la recolle pas.

Essaye avec ce code :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
_GDIPlus_Startup()
Global $position[2] = [100, 100]
HotKeySet("{DOWN}", "_Down")
$pPerso = @ScriptDir & "\cercle.png"
$hImage = _GDIPlus_BitmapCreateFromFile($pPerso)
Global $Form1 = GUICreate("Form1", 615, 437, 426, 378)
GUISetState(@SW_SHOW)
$graphHdl = _GDIPlus_GraphicsCreateFromHWND($Form1)
_GDIPlus_GraphicsClear($graphHdl, 0xFF9EFD38)
$hBitmap = _GDIPlus_GraphicsDrawImageRect($graphHdl, $hImage, $position[0], $position[1], 15, 15)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
            _GDIPlus_GraphicsDispose($graphHdl)
            _GDIPlus_BitmapDispose($hBitmap)
            _GDIPlus_BitmapDispose($hClone)
            _GDIPlus_Shutdown()

    EndSwitch
WEnd

Func _Down()
    $hClone = _GDIPlus_BitmapCloneArea($hImage, $position[0], $position[1], 15, 15)
    $position[1] += 50
    _GDIPlus_GraphicsDrawImageRect($graphHdl, $hClone, $position[0], $position[1], 15, 15)
EndFunc   ;==>_Down
 
Je pense que dans un premier temps ca va t'avancer, ensuite, je connais pas vraiment cet UDF, donc difficil de t'aider d'avantage.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Pb de clonage GDI+

#3

Message par mikell »

Jette un coup d'oeil
" 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: [..] Pb de clonage GDI+

#4

Message par sozary »

Merci de ta réponse! Néanmoins il y a un soucis, l'image ne se duplique pas entièrement :( (une seule est partie est visible)
"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: [..] Pb de clonage GDI+

#5

Message par mikell »

_GDIPlus_BitmapCloneArea (comme son nom l'indique) sert à créer une image à partir d'une partie d'une autre image, rien à voir avec le fait de déplacer une image
" 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: [..] Pb de clonage GDI+

#6

Message par sozary »

Ah? Merci bien!
Juste une autre question pendant que je te tiens mikell!

Ce labyrinthe n'a pas utilisé cette technique, mais laquelle il a utilisé svp? Car avec ton programme j'ai pas trop compris comment après redimensionner l'image :(!
"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: [..] Pb de clonage GDI+

#7

Message par mikell »

Je ne sais pas et je n'ai pas l'intention d'analyser tout son code, surtout en semaine alors que je bosse demain :mrgreen:

Donc je vais au plus simple : voilà mon pingouin en 64x64 (divisé par 2)
► 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
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] Pb de clonage GDI+

#8

Message par sozary »

D'accord! Bah ton programme marche de toute façon ^^!

Merci!!
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [R] Pb de clonage GDI+

#9

Message par A2Energie »

Bonjour,

J'ai l'impression que le Script de Mikell crée une Gui (conteneur) : $gui = GUICreate(
Puis crée l'image : $hImage = _GDIPlus_ImageLoadFromFile(
Puis attache l'image au conteneur : SetBitMap($gui, $hImage, 255)
Pour enfin déplacer le conteneur : WinMove($gui, "", Default, $p)

Car dans ton script Sozary, tu ne peux pas déplacer l'image car $hBitmap = _GDIPlus_GraphicsDrawImageRect(
Return (true) et pas d'id ou de Handle, donc ensuite impossible d'identifier l'image pour la déplacer.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Pb de clonage GDI+

#10

Message par mikell »

Bon voilà avec le code de départ c'était tout simple en fait
► Afficher le texte
Mais je reste persuadé (pour ce que je soupçonne que tu veux faire) que faire une petite gui transparente pour l'image et la déplacer reste la meilleure solution
Dans ce code, chaque coup de fonction Down oblige à "nettoyer" $hGraphics et à tout y réécrire, et si tu as plusieurs images de fond ça peut être lourd
" 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: [R] Pb de clonage GDI+

#11

Message par sozary »

Oui, c'est la méthode que j'ai utilisé! Pour l'instant j'ai bien compris comment j'ai procédé, donc je préfère laisser comme tel :)!
Merci de votre aide!
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Répondre