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 :

Problème de fonctionnement du Canvas


Sujet :

C++Builder

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut Problème de fonctionnement du Canvas
    Bonsoir à tous,
    Depuis 2 jours, le canvas n'affiche rien. Exemple tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
            Form1->Canvas->Brush->Color=clWhite;
            Form1->Canvas->Rectangle(0,0,15,15);
    }
    Resultat : La Form ne bronche pas.
    Si je pouvais avoir une solution à ce problème merci...

  2. #2
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Essai sans mettre "Form1->"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Canvas->Brush->Color = clRed;
    +A

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Est ce que ce n'est pas ce que tu cherche.
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    // mise en couleur de la forme fond blanc
    Form1->Color = clWhite;
     
    // dimensionner la forme en haut a gauche
    // longeur 105 hauteur 105
    Form1->Top = 0;
    Form1->Left = 0;
    Form1->Height = 105;
    Form1->Width = 105;
    }
    //---------------------------------------------------------------------------

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    No Blondelle
    ce que je voulais c'était juste faire un carré sur la Form pour vérifier que mon Canvas marchait
    D'ailleurs ca ne marche toujours pas.
    Je ne vois pas d'où celà peut provenir... Peut-être des options du projet.

    PS : Le canvas ne marche ni sur la form ni sur la PaintBox... .
    Voici la fonction en question...
    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
     
    void Redraw(TForm1 *Form)
    {
    int i,j,k;
    TPaintBox *pBox;
            for (i=0; i<3; i++){
                    for (j=0; j<3; j++){
                            for (k=0; k<6; k++){
                                    switch (k)
                                    {
                                    case 0 : pBox=Form->Front; break;
                                    case 1 : pBox=Form->Left; break;
                                    case 2 : pBox=Form->Right; break;
                                    case 3 : pBox=Form->Up; break;
                                    case 4 : pBox=Form->Down; break;
                                    case 5 : pBox=Form->Back; break;
                                    }
                                    switch (Cube[k][j][i])
                                    {
                                    case 1 : pBox->Canvas->Brush->Color=clWhite;                     break;
                                    case 2 : pBox->Canvas->Brush->Color=clBlue; break;
                                    case 3 : pBox->Canvas->Brush->Color=clRed; break;
                                    case 4 : pBox->Canvas->Brush->Color=clGreen; break;
                                    case 5 : pBox->Canvas->Brush->Color=clYellow; break;
                                    case 6 : pBox->Canvas->Brush->Color=clPurple; break;
                                    }
                            pBox->Canvas->Rectangle(i*40,j*40,i*40+40, j*40+40);
                            }
                    }
            }
    }

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    voila quelque chose qui marche.
    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
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    // mise en couleur fond blanc
    //Form1->Color = clWhite;
     
    // dimensionner la forme en haut a gauche
    // longeur 105 hauteur 105
    Form1->Top = 0;
    Form1->Left = 0;
    Form1->Height = 400;
    Form1->Width = 400;
    Image1->Canvas->Brush->Color = clWhite;
    Image1->Canvas->Rectangle(0, 0, 100, 100);
     
    }
    //---------------------------------------------------------------------------
    Est tu sur que tous les Canvas sont visible il est possible que le Canvas de certains composant soient invisible

  6. #6
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Celà vient du fait que le dessin par le canvas est temporaire.
    Il faut solliciter la méthode qui dessine dans les événements OnPaint et OnResize de la Form.

    Ca reste vrai pour un TPaintBox pour ce qui est de l'événement OnPaint.

    A plus !

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Voici un exemple de Canvas qui marchait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    switch (Recover[q][f])
         {
         case 1 :   pBox->Canvas->Brush->Bitmap=Form->_1->Picture->Bitmap; break;
        case 2 : pBox->Canvas->Brush->Bitmap=Form->_2->Picture->Bitmap; break;
        case 3 : pBox->Canvas->Brush->Bitmap=Form->_3->Picture->Bitmap; break; // etc...
                                                    }
    pBox->Canvas->Rectangle(r*20,s*20,r*20+20,s*20+20);
    Aucune différence hors mis le fait que cet exemple se sert de bitmap...
    Le canvas est ici utilisé sur la PaintBox...
    J'ai beau crée un rectangle par défaut sur ma Form rien ne se fait rien ne se crée... Et je n'avais pas besoin d'un évènement OnPaint ou OnResize pour dessiner à ma guise les rectangles ou les TBitmap...

  8. #8
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Bonsoir,

    J'essaie de résoudre ce problème, est je suis tombé sur un os moi aussi. Je profite donc de ce post afin d'exposer mon problème.

    Voici mon .h :

    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
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            void __fastcall FormCreate(TObject *Sender);
    private:	// Déclarations utilisateur
                    Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
    public:		// Déclarations utilisateur
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    Et voici mon .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      image->Canvas->Brush->Color=clWhite;
      image->Canvas->Rectangle(0,0,15,15);
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
      Canvas->Draw(0,0,image);
    }
    Et l'erreur généré par BCB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [C++ Erreur] Unit1.h(17): E2233 Impossible d'initialiser un membre de classe ici
    Je ne comprends pas trop comment faire pour le déclarer en global.

    Sinon, j'ai un bout de code qui est tiré de BCB est qui pourrait être intéressant pour Julien_C++ :

    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
    void __fastcall TForm1::Button1Click(TObject *Sender)
     
    {
      Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
      try
      {
        pBitmap->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp ");
        pBitmap->Transparent = true;
        pBitmap->TransparentColor = pBitmap->Canvas->Pixels[50,50];
        Form1->Canvas->Draw(0,0,pBitmap);
        pBitmap->TransparentMode = tmAuto;  
        Form1->Canvas->Draw(50,50,pBitmap);
      }
      catch (...)
     
      {
        ShowMessage("Ne peut charger ni afficher le bitmap");
      }
      delete pBitmap;
    }
    Merci

  9. #9
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut
    @ero-sennin : ton erreur vient du fait que tu instancie un Graphic::TBitmap dans ton header.
    Essaye de l'instancier dans ton constructeur ou dans ton FormCreate et tu ne devrais plus avoir d'erreur.

  10. #10
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 474
    Points
    11 474
    Billets dans le blog
    11
    Par défaut Euh
    Le Canvas ne sert que pour les méthodes Paint et Repaint de ta Form.
    Donc pour voir ton carré s'afficher il faut en fait que tu définisses la fonction OnPaint de cette Form (Inspecteur d'objets - Evènements - OnPaint), ca te crée la fonction FormPaint où tu places ton bout de code concernant le Canvas :
    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
     
    //------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //------------------------------------------------------------
    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
      Form1->Canvas->Brush->Color=clWhite;
      Form1->Canvas->Rectangle(0,0,15,15);
    }
    //------------------------------------------------------------
    Et la ton carré s'affiche.

    Pour la paintbox c'est pareil, il faut redéfinir la fonction OnPaint de la même manière

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Bonjour !
    Je vous jure que l'évènement OnPaint ne m'était pas nécessaire il y a 3 jours. Je pouvais utiliser le Canvas aussi bien sur la form que sur la paintbox et aussi bien sur des fonctions Event que sur des fonctions 'crées manuellement...'

    Mais j'avoue que pour l'évènement OnPaint vous aviez raison
    Ceci signifie que je dois séparer chaque découpe de cube sur chaque évènement PaintBox.
    Si il y a d'autres problèmes de Canvas je laisse le post ouvert.

    Merci à vous tous

    PS : L'inconvénient : EN utilissant OnPaint pour chaque PaintBox, mon programme contient 6 fois à quelque chose près la même chose...

  12. #12
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Captain_JS
    @ero-sennin : ton erreur vient du fait que tu instancie un Graphic::TBitmap dans ton header.
    Essaye de l'instancier dans ton constructeur ou dans ton FormCreate et tu ne devrais plus avoir d'erreur.

    Je voulais déclarer le Bitmap en global afin de pouvoir utiliser ma "variable" image de type Bitmap dans différents événements.

    En delphi, j'y arrive, mais ce n'est pas du tout la même chose avec C++ Builder.
    Moi qui pensais que ca serait aussi simple qu'en delphi, je me rends compte que non

    Captain_JS (ou quelqu'un d'autre) peut-il m'expliquer comment déclarer ma "variable" image de type Bitmap pour que je puisse y accéder partout ?

    Je donne mon code modifié :

    le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            void __fastcall FormCreate(TObject *Sender);
            void __fastcall FormPaint(TObject *Sender);
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
            __fastcall TForm1(TComponent* Owner);
    };
    Graphics::TBitmap *image = new Graphics::TBitmap;
    et le .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      image->Canvas->Brush->Color=clWhite;
      image->Canvas->Rectangle(0,0,150,150);
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
      Form1->Canvas->Draw(0,0,image);
    }
    Le problème, c'est que je n'ai rien à l'écran et que je n'ai plus d'erreur !
    Merci

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Tu es sur que l'espace Graphics soit nécessaire?
    Tout simplement non?

  14. #14
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je pense que c'est nécessaire car sinon j'obtiens une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [C++ Erreur] Unit1.h(17): E2015 Ambiguïté entre 'TBitmap' et 'Windows::TBitmap'
    Je comprends vraiment pas

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Tien : Essaye ca
    Ca doit marcher :
    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
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TBitmap *image;
    private:	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

  16. #16
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Cela ne fonctionne pas !
    Erreur, erreur, erreur

    Je commence à désespérer

  17. #17
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Tiens essaye ça, ça fonctionne.
    ça dessine une bitmap en niveaux de gris sur la TForm, remplace par le tien:

    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
     
    //-------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //-------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //-------------------------------------------------------------------------
     
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
    {
    }
    //-------------------------------------------------------------------------
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      BYTE* pPx;
     
      m_pBmp = new Graphics::TBitmap();
      m_pBmp->Width = 255;
      m_pBmp->Height = 255;
      m_pBmp->PixelFormat = 24;
     
      for (int nRow=0; nRow<m_pBmp->Height; nRow++) {
        pPx = (BYTE*)m_pBmp->ScanLine[nRow];
        for (int nCol=0; nCol<m_pBmp->Width; nCol++) {
          memset(pPx, nCol, 3);
          pPx+=3;
        }
      }
    }
    //-------------------------------------------------------------------------
     
    void __fastcall TForm1::FormDestroy(TObject *Sender)
    {
      delete m_pBmp;
    }
    //-------------------------------------------------------------------------
     
    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
      Form1->Canvas->Draw(0,0,m_pBmp);
    }
    //-------------------------------------------------------------------------
    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
     
    #ifndef Unit1H
    #define Unit1H
    //-------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //-------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
      void __fastcall FormPaint(TObject *Sender);
      void __fastcall FormCreate(TObject *Sender);
      void __fastcall FormDestroy(TObject *Sender);
    private:	// Déclarations utilisateur
    protected:
      Graphics::TBitmap* m_pBmp;
    public:		// Déclarations utilisateur
      __fastcall TForm1(TComponent* Owner);
    };
    //-------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //-------------------------------------------------------------------------
    #endif
    Tu as sans doute un problème d'instanciation, mais pour dessiner sur la form il faut passer par le OnPaint ou un composant TPaintBox. Tu peux aussi faire du subclassing mais le principe restera le même : override du OnPaint.

    Yarp
    www.senosoft.com

  18. #18
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci Yarp pour ce code,
    Tout fonctionne nikel désormais !

    Si ce n'est déjà fait et si Julien C++ à eu réponse à ca question, ce topic peut être considéré comme résolu

    Merci et @ +

  19. #19
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 474
    Points
    11 474
    Billets dans le blog
    11
    Par défaut JulienC++
    Si tes paintbox dessinent toutes la même chose, il suffit que tu leur attribues la même fonction Paint non?

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

Discussions similaires

  1. [Java2D] Problème de taille du canvas
    Par vero55 dans le forum 2D
    Réponses: 2
    Dernier message: 16/04/2007, 10h44
  2. Réponses: 5
    Dernier message: 16/12/2006, 13h24
  3. [HashTable] Problème de fonctionnement
    Par RR instinct dans le forum Langage
    Réponses: 8
    Dernier message: 22/06/2006, 15h01
  4. Datecalc : problème de fonctionnement
    Par mollux dans le forum Modules
    Réponses: 2
    Dernier message: 07/06/2006, 09h59
  5. [Tomcat] Problème de fonctionnement de Tomcat sous linux
    Par lautux dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 18/03/2006, 11h30

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