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 :

Création dynamique de TImages [FAQ]


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Création dynamique de TImages
    Bonjour à tous,

    voilà ma situation:

    Je dois dessiner une suite de ronds et de traits qui les relient. C'est ronds sont en fait le même TBitmap.
    Je shoutairais donc pouvoir créer plusieurs TImages dans ma Form.
    Mais quand j'essaie d'instancier une TImage il y a une erreur lorsque j'utilise une méthode de mon objet.

    initialisation du Bitmap:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Graphics::TBitmap *rond1 = new Graphics::TBitmap();
    rond1->LoadFromFile(b2.bmp);
    initialisation de l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TImage * image1;
    image1 = new TImage(image1);
    image1->Picture->Bitmap = rond1;
    je suppose que le ligne: image1 = new TImage(image1); est fausse mais je ne vois pas comment faire (je n'ai pas trouvé de constructuer par defaut du type TImage() ).

    Sinon, y aurait-il un moyen d'éviter d'utiliser une image bitmap ? J'ai essayé la méthode Ellipse de Canvas mais le résultat est plutôt laid 8/

    Merci de votre aide

    @+

  2. #2
    Membre chevronné
    Avatar de Geronimo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 156
    Points : 1 969
    Points
    1 969
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TImage * image1; 
    image1 = new TImage(image1);
    Tu passes image1 comme Owner de lui-même donc je pense que c'est là le problème (même j'en suis sur). Il faut que tu fasses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image1 = new TImage(this);
    avec this = Form1, normalement.
    Une question concernant C++Builder ? Voici la réponse
    Consultez aussi les tutoriels de qualité de la section C/C++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci, je test desuite !!!

    @+

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Tu dois aussi faire un Assign du TBitmap. Dans la logique c'est toi qui instancie le TBitmap, c'est toi qui le détruit ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Graphics::TBitmap *rond1 = new Graphics::TBitmap(); 
    rond1->LoadFromFile(b2.bmp); 
     
    TImage * image1 = new TImage(this); 
    image1->Picture->Bitmap->Assign(rond1);
    A ta disposition
    Christophe MERLIER

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Ok, il n'y a plus d'erreur mais mon image n'apparaît pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TImage *Image1 = new TImage(this); //instancie l'image
     
    //positionne l'image:
    Image2->Left = 50;
    Image2->Top = 50;
     
    Image2->Picture->Bitmap->Assign(rond1); //assigne une Picture a l'image
     
    Image2->AutoSize = true; //adapte la taille de l'image a sa Picture
     
    Image2->Canvas->MoveTo(0,0); //on utilise le stylo afin d'utiliser l'image
     
    Image2->Visible = true;  //au cas ou...
    rien n'apparait sur ma form...

    @+

  6. #6
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    Image2->Refresh(); (peut etre)

  7. #7
    Membre chevronné
    Avatar de Geronimo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 156
    Points : 1 969
    Points
    1 969
    Par défaut
    Non, il faut mettre :

    Pour qu'un composant apparaisse, il faut que la fiche sache où, c'est-à-dire par quel autre composant il est contenu. Dans ce cas, ce sera la fiche. S'il doit être dans un Panel, on ferait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image->Parent = Panel1;
    Une question concernant C++Builder ? Voici la réponse
    Consultez aussi les tutoriels de qualité de la section C/C++

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Non plus...

    j'ai rajouté un Image2->Canvas->LineTo(5,5);
    mais rien..

    j'ai essayé de mettre le code dans les méthodes (sachant que la forme sùappelle Main):
    TMain::TMain(TComponent* Owner) : TForm(Owner)
    TMain::FormShow(...)
    TMain::FormCreate(..)

    rien de rien

    c'est grave docteur ??

    @+

    dans tous les cas merci de votre aide !!

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image2->Picture->Bitmap->Assign(rond1);
    par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image2->Picture->Bitmap->Assign(NULL); // efface l'image
    Image2->Picture->Bitmap->Canvas->Draw(0,0,rond1);
    A ta disposition
    Christophe MERLIER

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Geronimo/ désolé je n'avais pas vu ton message. je teste de suite

    Merci beaucoup


    @+

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci à tous ca marche


    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/02/2008, 16h55
  2. Pb création dynamique plusieurs Timage
    Par fred64 dans le forum Delphi
    Réponses: 4
    Dernier message: 11/09/2006, 11h23
  3. [D7] Création dynamique de Form
    Par jer64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2003, 12h20
  4. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07
  5. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53

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