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 :

[BCB6]Redimentionnement manuel d'un composant TImage


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 58
    Points : 47
    Points
    47
    Par défaut [BCB6]Redimentionnement manuel d'un composant TImage
    Bonjour,
    J'utilise une composant TImage pour dessiner un rectangle.
    J'utilise aussi un composant TScrollBox pour avoir une vue sur toute l'image. Mais quand je dessine mon retanglue dont la taille dépasse la taille de l'écran , il n'ay que la moitié de mon rectanglue qui se dessine.

    Merci pour ton aide.

  2. #2
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Votre message étant très succinct, je ne suis pas sûr d'avoir tout compris mais je peux déjà vous dire qu'il n'est pas nécessaire d'utiliser le composant TImage si vous voulez dessiner, le mieux est d'utiliser un PaintBox. Vous déclarez un bitmap dans la classe principale, vous faites new dans son constructeur et delete au moment du OnDestroy de la forme principale, vous dessinez dans le bitmap donc hors écran et dans l'événement OnPaint du PaintBox vous copiez le bitmap dans le Canvas du PaintBox. Dans ces conditions, votre rectangle sera permanent et se redessinera au moment des scrolls.

    À bientôt
    Gilles

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    Bonjour et merci pour votre aide,

    En fait, ça pourrai être une solution à mon problème ce que vous m'avez proposé. Mais je n'arrive pas à copier mon Bitmap. Voilà le code que j'ai utilié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            bitmap = new  Graphics::TBitmap();
            bitmap->Canvas->Pen->Color = clRed;
            bitmap->Canvas->Brush->Color = clGreen;
            bitmap->Canvas->Rectangle(0,0,100,100);
     
            PaintBox1->Canvas->CopyMode = cmSrcCopy;
            PaintBox1->Canvas->CopyRect(rect,bitmap->Canvas,rect);
    Merci bien.

    Balises [Code] rajoutées par Ricky81
    Merci d'y penser à l'avenir

  4. #4
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Il faut donner une dimension à votre bitmap (juste après l'avoir déclaré par new) qui en principe doit être celle du PaintBox par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BM->Width=PaintBox1->Width;
    BM->Height=PaintBox1->Height;
    Ensuite, le bitmap se recopie dans l'événement OnPaint et ce, pour provoquer sa mise à jour si nécessaire, par exemple si vous bougez la fenêtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
    {
    PaintBox1->Canvas->Draw(0,0,BM);
    }
    C'est cette technique qui rend le dessin permanent car Windows décide d'appeler de lui-même cette fonction si nécessaire. Après avoir dessiné dans le bitmap, il faut provoquer sa copie à l'écran (sinon vous ne verrez rien) donc après avoir dessiné hors écran dans le bitmap faites

    À bientôt
    Gilles

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    Cool ça marche.

    Merci Merci un milliard de fois.

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

Discussions similaires

  1. [Joomla!] Installation manuelle d'un composant dans joomla
    Par ptifilou696 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/09/2007, 11h27
  2. Surcharger la méthode Create du composant TImage
    Par ero-sennin dans le forum Delphi
    Réponses: 27
    Dernier message: 07/03/2007, 16h29
  3. Erreur composant TImage : "la classe n'existe pas"
    Par jeroe dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/03/2006, 16h46
  4. Composant TImage sur fenêtre MDI Parent
    Par charles.apollon dans le forum C++Builder
    Réponses: 6
    Dernier message: 10/02/2005, 15h47
  5. mettre a blanc le composant TImage
    Par Chonchon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/11/2003, 09h24

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