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++ Discussion :

deplacer des images, creer un fichier composite


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut deplacer des images, creer un fichier composite
    Bonjour à toutes et à tous,
    je viens vers vous pour avoir de l'aide.
    Je voudrais coder une application (Embarcadero XE3 C++) qui me permettrait de créer des documents composites: images + texte.
    Les problèmes que je rencontre sont:
    enregistrer les données texte+images dans un fichier
    insérer des images (bmp) et pouvoir les déplacer indépendamment et quand je le veux; le nombre d'images est inconnu au
    moment ou l'utilisateur lance l'application .
    Je vous soumet le code qui me sert de test.
    Les images statiques ne posent pas de problèmes graves.
    Les images insérées dynamiquement sont déplaçables tant qu'une autre image n'a pas été insérée.
    Ce problème vient peut être du fait que toutes les images insérées dynamiquement portent le même nom....
    Le fonctionnement que je voudrais obtenir c'est: cliquer sur l'image que je veux déplacer et bouger la souris pour la déplacer
    (jusqu'à relâchement du bouton de la souris).
    Les pistes que j'ai explorées sans succès sont : ActiveControl et this.
    Une des questions que je me pose est: peut on obtenir ce fonctionnement en partant d'un RichEdit?
    Je pense que ma façon de coder vas vous paraitre naïve.

    Merci de me consacrer un peu de votre temps et de partager vos connaissances.


    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    	int pt_clique_x;
    	int pt_clique_y;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift, int X,
    		  int Y)
    {
    			if (GetAsyncKeyState(VK_LBUTTON))
    			//while  (GetAsyncKeyState(VK_LBUTTON))
    			{
     
    				Image2->Top=Image2->Top+Y-pt_clique_y;
    				Image2->Left=Image2->Left+X-pt_clique_x;
     
     
     
    			}
     
     
     
    				if (GetAsyncKeyState(VK_RBUTTON) && GetAsyncKeyState(VK_MBUTTON))
    				{
     
    					  if (pt_clique_x<X || pt_clique_y<Y)
    					  {
    					  Image2->Height = Image2->Height+(Y-pt_clique_y);
    					  Image2->Width = Image2->Width+(X-pt_clique_x);
    					  }
     
    					  else
    					  {
    					  Image2->Height = Y; //oui pour retrecir
    					  Image2->Width = X;  //oui pour retrecir
    					   }
     
    				}
     
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
    		  int X, int Y)
    {
    	pt_clique_x=X; //variable globale qui memorise la valeur en X du pt cliqué
    	pt_clique_y=Y; //variable globale qui memorise la valeur en X du pt cliqué
     
     
    }
    //---------------------------------------------------------------------------
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       //AnsiString nom="image_";
    	Image3 = new TImage(this);
    	//Image3->Name=nom;
    	Image3->Left = 100;
    	Image3->Top = 100;
    	Image3->Parent = Form1;
    	Image3->Picture->LoadFromFile("D:\\Bibliothèques\\Mes images\\Capture.bmp");
    	Image3->OnMouseMove = Image3MouseMove;
    	//delete Image3;
     
    }
     
     
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image3MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
    {
     
    	if (GetAsyncKeyState(VK_LBUTTON))
    	//while  (GetAsyncKeyState(VK_LBUTTON))
    	{
    	Image3->Top=Image3->Top+Y-pt_clique_y;
    	Image3->Left=Image3->Left+X-pt_clique_x;
    	}
     
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 374
    Points : 41 541
    Points
    41 541
    Par défaut
    Donc tu as plusieurs problèmes différents, dont au moins deux:
    • Le coup du glisser-déplacer: Spécifique à Borland, je ne peux pas t'aider là-dessus
    • Écrire un fichier composite. Pour ça, je vais développer.


    Pour écrire un fichier composé de plusieurs données (typiquement récupérées d'autres fichiers), tu peux utiliser une bibliothèque pour un format de fichier existant pour ça (genre, une bibliothèque de Zip, comme le fait OpenOffice: Les .odt sont des .zip contenant plusieurs fichiers) ou bien tu peux simplement faire ton propre format binaire en plusieurs sections. Ce n'est pas trop dûr, du moment que chaque section contient au minimum:
    • Un indicateur de type, indiquant ce que représente la section.
    • Une valeur de taille, indispensable: Il faut qu'un programme puisse toujours "sauter" la section s'il ne la comprend pas.
    • Les données.

    À ça tu peur rajouter un ID de section (nombre, chaîne de caractères ASCII, etc.), lui aussi indépendant du format "interne" de la section (et donc, indépendant de son type).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonsoir Médinoc.

    Merci pour ta réponse.
    Je vais m’intéresser au bibliothèques que tu mentionnes.
    Faire son propre format de fichier me semble difficile d’accès mais je vais essayer de trouver des informations et de comprendre.

    Merci pour ton aide.

  4. #4
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par sergeprd Voir le message
    Faire son propre format de fichier me semble difficile d’accès mais je vais essayer de trouver des informations et de comprendre
    Pas forcément, il faut juste bien définir la structure du fichier. Mais utiliser un type de fichier existant (zip par exemple) permet d'utiliser des libs existantes et de pouvoir gérer ton fichier après avec n'importe quel soft supportant le format que tu utilises.
    Entre utiliser un format perso ou un format bien connu, les deux sont valables et dépendent de ton besoin.

    (Et pour le code Borland, pareil je connais pas )

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour Iradrille.

    Merci pour tes conseils, la meilleure solution semble donc être l'utilisation d'une bibliothèque existante(zip).
    J'ai commencé à chercher mais j'ai pas tout compris quant à leur utilisation.

    Merci.

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

Discussions similaires

  1. Sauvegarder des images dans un fichier
    Par Julien Bodin dans le forum Général Java
    Réponses: 1
    Dernier message: 05/06/2009, 10h53
  2. Ajouter des images dans un fichier.txt
    Par duaru157 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 18/01/2009, 16h35
  3. Deplacer des images
    Par elghadi_mohamed dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/11/2007, 13h26
  4. récupérer dans le ClipBoard des images d'un fichier AVI
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/06/2007, 12h10
  5. Acces à des images dans un fichier resource
    Par boulo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/03/2007, 15h22

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