19/04/2024
Windev et les Api WindowsNb de visiteurs en ligne : 1
>> Introduction << >> Codes et Forum << >> Download <<


Rubrique : 5 - Trucs et astuces       Sujet : Déplacer rapidement une image
Auteur Message
 °¨¨ JL ¨¨° Posté le : 23/06/2000 12:00:00


// °¨¨¨JL¨¨¨°  
// Pour déplacer une image on peut modifier les propriétés ..colonne et ..ligne mais le résultat n'est pas très satisfaisant au niveau de la vitesse d'exécution et cela entraine des effets disgracieux au niveau de l'affichage.
// Pour supprimer ces problèmes, on peut utiliser l'api MoveWindow. Dans l'exemple suivant, je veux animer 'image3' dans les limites du champ 'image1'...

// Appel de la procédure (exécutée jusqu'à la fermeture de la fenêtre) :  

moveimage("image1","image3")


// La Procédure :

Procédure moveimage(champimage,image)

col , lig sont des entiers
x , x1 , y , y1 sont des entiers
x = {champimage}..colonne
x1= {champimage}..colonne+{champimage}..largeur-{image}..largeur
y = {champimage}..ligne
y1= {champimage}..ligne+{champimage}..hauteur-{image}..hauteur
sensc , sensl est des booleens

pv est un entier=2 // pas vertical du déplacement
ph est un entier=1 // pas horizontal
col={image}..colonne
lig={image}..ligne
{image}..colonne=1500

boucle

    si col > x1 alors
        sensc=1
    fin
    si col < x alors
        sensc=0
    fin
    si lig > y1 alors
        sensl=1
    fin
    si lig < y alors
        sensl=0
    fin
    si sensc alors
        col-=ph
    sinon
        col+=ph
    fin
    si sensl alors
        lig-=pv
    sinon
        lig+=pv
    fin

    appeldll32("user32","MoveWindow",handle(image),col,lig,{image}..largeur,{image}..hauteur,1)
    appeldll32("user32","UpdateWindow",handle())
    si appeldll32("user32","GetInputState") alors
        multitache(-1)
    fin
fin