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 :

Drag Image in c++ form


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Drag Image in c++ form
    Bonjour,
    Est ce que qq'un aurait il un module deja fait qui permettrai de bouger une image Jpeg avec la souris dans une form?

    Merci...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Points : 75
    Points
    75
    Par défaut
    Bonjour

    Tu peux mettre ton JPeg dans un TImage (il y a des composants pour ça ici) et faire qq chose à partir du code ci-dessous (je tire cela d'un de mes fichiers, il faut adapter un peu ce code, ici c'est pour déplacer le TImage avec le bouton droit)
    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
     
    // TFiche_Preferences est le nom de la fiche
    // Cadre est le nom du TImage
    int PosX, PosY, DragX, DragY;					// pour déplacer les images
    bool rMouse;
     
    void __fastcall TFiche_Preferences::CadreMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    	if(Button == mbRight)	// appui sur bouton droit souris
    	{	PosX = X; PosY = Y;    // Coord souris
    		rMouse = true;         	
    	}
    }   
     
    void __fastcall TFiche_Preferences::CadreMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
    {
    	TImage *Img = (TImage*)Sender;
    	if (rMouse)
    	{		DragX = X-PosX;         // nouvelles coord
    			DragY = Y-PosY;
    			Img->Left = Img->Left +DragX;  	// je déplace image
    			Img->Top = Img->Top + DragY;
    	}
    }
    //---------------------------------------------------------------------------
    void __fastcall TFiche_Preferences::CadreMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    	rMouse = false;		// fin appui sur bouton droit souris  pour déplacement cadre
    }
    C'est une possibilité, il doit y en avoir d'autres.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Il vaut mieux utiliser la méthode SetBounds pour fixer en une seule
    passe les nouvelles coordonnées de l'image. Celà présente l'avantage de
    minimiser les effets de scintillement, sans les supprimer tout à fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool MoveFlag = false;
    int Movex;
    int Movey;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm1::Image1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    MoveFlag = true;
    Movex = X;
    Movey = Y;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    if(MoveFlag)
        {
        Image1->SetBounds(  Image1->Left + X - Movex,
                            Image1->Top + Y - Movey,
                            Image1->Width,
                            Image1->Height);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    MoveFlag = false;
    }
    Pour supprimer les scintillement il faudrait dessiner l'image sur ma form...

    A plus !

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Un grand merci à vous tous...

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

Discussions similaires

  1. [VB.net CF] Image jpg sur form
    Par WriteLN dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/01/2006, 15h54
  2. [MySQL] Afficher image stockée sous forme binaire
    Par Luffy Duck dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/12/2005, 18h30
  3. [VB.NET] image dans un form
    Par babemagus dans le forum Windows Forms
    Réponses: 13
    Dernier message: 13/12/2005, 14h46
  4. Réponses: 12
    Dernier message: 22/02/2005, 17h45
  5. Prob, images, Panels, et form.
    Par CaptainChoc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/05/2003, 10h08

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