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 :

TCanvas et C++ Builder


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut TCanvas et C++ Builder
    Salut à tous,

    Quel est le composant visuel d'un TCanvas ? à part le taper directement dans le code source, je n'ai pas trouvé dans le panoplie de composants graphique de Borland, peut-être qu'au niveau visuel ça a un autre nom.

    A+

  2. #2
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Ce qui est visuel, c'est la zone client d'un composant sur laquelle on peut dessiner
    à l'aide de TCanvas qui se charge de mettre en adéquation cette zone client avec différentes
    méthodes pour dessiner quelques primitives et réaliser quelques opérations de base.

    Exemple :
    Un bitmap qui n'est pas un composant visuel dispose pourtant d'un canvas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
    ...blablabla pour Bitmap->Width, Bitmap->Height, Bitmap->Canvas->Pen (et Brush)
    Bitmap->Canvas->Rectangle(0,0,50,50); //dessine un carré sur le bitmap
    Form1->Canvas->Draw(0,0, Bitmap); //affiche le bitmap sur la form
    Avec BCB 3 Pro, les objets visuels disposant d'un TCanvas accessible directement par
    l'utilisateur sont assez limités (ils sont assez souvent private donc, peut-être, accessible
    si après dérivation (nouveau composant) on les redéclare public):

    TForm,
    TImage (et TImage::TPicture::TBitmap),
    TPaintBox
    TCustomControl (pour réaliser des composants personnalisés)
    et par ci par là lorsque l'on souhaite dessiner ses propres Items (Liste déroulantes...)

    Il faut consulter la doc ou de temps en temps se servir de la touche F1 !

    A plus !

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Je te remercie de ton aide, car j'aimerais créer un objet visuel me permettant de visionner ce que je vais imprimer avant de l'imprimer.

    Surtout ne pas passer par le PrintPreview, mais mettre un simple composant visual dans le form afin de voir ce que je vais printer.

    Bien à toi

  4. #4
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Tu peux le faire sur une form dont tu fixes, par exemple, la propriété FormStyle à fsStayOnTop
    pour qu'elle soit toujours au premier plan par rapport à ta fiche principale.

    Sinon tu peut prendre un TPaintBox... ?

    Avec ma version BCB 3 Pro, j'utilise un bitmap en arrière plan sur lequel j'effectue les différentes
    opérations pour dessiner le tout. Ensuite je dessine le bitmap sur la form (comme je j'ai montré dans
    la réponse précédente). A partir de là tu peux développer un tas de mécanismes pour faire glisser la
    page dans la form...

    Tout dépend de ce que tu as à faire et surtout comment tu a envie de présenter tout ça !

    Si j'ai un conseil à te donner c'est de travailler à l'aide d'une méthode avec un pointeur
    sur un canvas, comme paramètre. Cela permet de dessiner sur n'importe quel objet disposant
    d'un canvas, mais aussi, il me semble, TPrinter::Canvas.

    Dans ce qui suit, je suppose que tout est modélisé à l'aide d'une class TPrimitive doté d'une méthode
    Draw(TCanvas *C) permettant de dessiner la primitive (ligne, rectangle, ellipse etc...) sur un canvas.
    Chaque instance (objet graphique) étant ajouté à une TList *Primitives.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::Dessiner(TCanvas *C)
    {
    for(int j = 0; j < Primitives->Count; j++)
        {
        TPrimitive *Primitive = (TPrimitive *)Primitives->Items[j];
        Primitive->Draw(C);
        }
    }
    Donc a l'usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dessiner(Canvas);//si c'est sur Form1
    Dessiner(Form2->Canvas);// si Form2 est sur la vue avant impression
    Dessiner(ArrierePlan->Canvas);//si ArrierePlan est un Graphics::TBitmap
    etc..
    Toujours se rappeler que TCanvas dispose d'une propriété Handle qui est le HDC du contexte de périphérique
    dans lequel le canvas doit dessiner. (Aide en ligne (TCanvas) ou F1 !)

    A plus !

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

Discussions similaires

  1. Choisir Visual c++ ou Borland C++Builder ?
    Par DevEric dans le forum Choisir un environnement de développement
    Réponses: 31
    Dernier message: 14/06/2007, 23h48
  2. Outils, cours et NOUVEAUX tutoriels pour Borland C++Builder
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 10
    Dernier message: 12/03/2006, 22h33
  3. c++ builder JavaDoc :)
    Par JEG dans le forum C++Builder
    Réponses: 8
    Dernier message: 08/06/2002, 13h31
  4. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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