IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Déplacer une TImage avec la souris [FAQ]


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Déplacer une TImage avec la souris
    Bonjour,

    Je travail sur Borland c++ Builder 6, et je souhaiterai déplacer une TImage avec la souis. Ca parait tout bête comme ca, mais je me prend la tête dessus depuis pas mal de temps.
    J'ai, au début, juste modifié les coordonnées de la TImage en fonction ndu déplacement de la souris, mais ca se rafraichissai tout le temps et ca scintillait. J'ai donc cherché et j'ai trouvé des fonction utilisant le double buffering (ou back buffering) tel que BitBlt, StretchBlt...
    En effet, ca ne clignotte pu, mais ma fenêtre n'est pu rafraichie cette fois ci. J'ai donc essayé de mettre ca dans un thread, mais ca fait pareil.

    C'est pour cela que j'ai recour à vous tous

    Voici mon (très simple) code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    //Clique sur la TImage "Img_tra"
    void __fastcall TForm1::clk_enf(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
           //StartX, StartY : variables globals
           StartX=X;
           StartY=Y;
    }
     
     
    //déplacement de la souris sur la TImage "Img_tra"
    void __fastcall TForm1::clk_move(TObject *Sender, TShiftState Shift, int X,
          int Y)
    {
      int DiffX,DiffY;
     
      //Différence entre le point de départ et de la position actuel de la souris
      DiffX=StartX-X;
      DiffY=StartY-Y;
     
      HDC hdcMem;
      HDC tmpDeskDC=GetDC(Handle);
     
      if (Shift.Contains(ssLeft)) // vérifie que le bouton gauche est enfoncé
      {
    	 //Affiche l'image "Img_tra" a ses nouvelles coordonnées
             BitBlt(tmpDeskDC ,Img_tra->Left-DiffX,Img_tra->Top-DiffY, Img_Largeur, Img_Hauteur, Img_tra->Canvas->Handle, 0, 0, SRCCOPY);
      }
     
      ReleaseDC(tmpDeskDC, hdcMem);
    }
    Merci de votre aide précieuse !

    [modéré par netah_25]
    [Pour utiliser les balises [code] laissez activé le BBCode -
    Merci d'y penser a l'avenir]

  2. #2
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 030
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 030
    Points : 8 316
    Points
    8 316
    Par défaut
    J'ai, au début, juste modifié les coordonnées de la TImage en fonction ndu déplacement de la souris, mais ca se rafraichissai tout le temps et ca scintillait.
    Tu peux faire comme ceci, mais tu rajoute ceci dans l'événement
    OnCreate de la fiche qui les contient et ça ne sintillera plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        DoubleBuffered = true;    
    }
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [ résolu ]
    Ca y est ca marche du tonner

    Merci bcp pour ta réponse claire CGi!

    ct tou bete, mais il fallait le savoir !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WM19] Déplacer une image avec le doigt ou la souris
    Par JEANROUSSEAU dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 04/09/2014, 15h19
  2. [C#] Déplacer un composant avec la souris
    Par GéniuS77 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/04/2011, 23h12
  3. Déplacer un panel avec la souris
    Par Harry dans le forum Delphi
    Réponses: 14
    Dernier message: 05/06/2006, 19h18
  4. [C++.net]Déplacer un Panel avec la souris
    Par Dlyan dans le forum MFC
    Réponses: 28
    Dernier message: 03/03/2006, 15h36
  5. Detection d'une fenetre avec la souris
    Par vivi2701 dans le forum C++
    Réponses: 6
    Dernier message: 09/06/2005, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo