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 :

Modifier la couleur d'une forme sélectionner


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Modifier la couleur d'une forme sélectionner
    Bonjour,

    Je dois ajouter à un dessinateur la fonction de pouvoir changer de couleur à une forme qui se trouve dans une TPaintBox, mon déssinateur possede un mainmenu.
    J'aimerais intégrer une palette de couleur dans ce mainmenu mais je ne sais pas comment faire ou si cela est possible, sinon je peux tout simplement intégrer une TColorBox. Pour le changement de couleur je ne sais pas du tout comment ca marche

    Merci de votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Personne n'a de réponse pour moi ?

  3. #3
    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
    Qu'entendez-vous par forme ?

    Voulez-vous dire la fenêtre (qui porte le nom de TForm) ou bien un dessin dans le PaintBox qu'il faudrait colorier d'une autre couleur ?

    À bientôt
    Gilles

  4. #4
    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 !

    Pour le TColorDialog, la coleur sélectionnée est donnée par la propriété Color.
    Donc, par exemple, pour modifier la couleur de Pen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(ColorDialog1->Execute())
        {
        PaintBox1->Canvas->Pen->Color = ColorDialog1->Color;
        }
    On sait donc aussi faire pour Brush.

    Bien sûr, le code définitif dépend du développement lié à la mise en oeuvre du dessin (dessin à main levée ou objétisation des formes géométriques).

    A plus !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Gilles Louïse Voir le message
    Qu'entendez-vous par forme ?

    Voulez-vous dire la fenêtre (qui porte le nom de TForm) ou bien un dessin dans le PaintBox qu'il faudrait colorier d'une autre couleur ?

    À bientôt
    Gilles
    Il s'agit de la forme dans le PaintBox (carré, triangle ...)

    Es t-il possible d'insérer une palette de couleur dans un MainMenu ?

  6. #6
    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
    Je ne vois pas de problème.

    Mettez un TColoDialog sur la forme et faites-le apparaître au moment du clic de votre fonction dans le menu. À partir de là, vous pouvez remplir la forme.

    La fonction du menu ressemble à ceci (si ce n'est qu'il faudra donner les vraies coordonnées de remplissage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::Paint1Click(TObject *Sender)
    {
    if(ColorDialog1->Execute())
       {
       BM->Canvas->Brush->Color=ColorDialog1->Color;
       BM->Canvas->FillRect(Rect(10,10,200,200));
       PBPaint(NULL);
       }
    }
    Ce code ouvre le TDialogColor et indique la couleur de remplissage. BM est un bitmap à déclarer dans la classe prinicpale et à créer au moment de la construction de la forme, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    __fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
    {
    BM=new Graphics::TBitmap();
    BM->Width=Screen->Width;
    BM->Height=Screen->Height;
    BM->Canvas->FillRect(Rect(0,0,PB->Width,PB->Height));
    }
    Détruice ce Bitmap au moment du Destroy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::FormDestroy(TObject *Sender)
    {
    delete BM;
    }
    Et forcer la copie du bitmap au moment du OnPaint de la PaintBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::PBPaint(TObject *Sender)
    {
    PB->Canvas->Draw(0,0,BM);
    }
    Voyez mon site, il y a des élements sur le PaintBox.

    À bientôt
    Gilles

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Il y a t'il quelque chose à ajouter pour PBPaint(NULL); et BM->Canvas->FillRect(Rect(0,0,PB->Width,PB->Height));

    Car il me trouve des erreur à cause des PB, peu être une include ???

    Et comment ce déclare le BM avec ceci ?
    Graphics::TBitmap *BM;

    Merci de votre réponse

  8. #8
    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
    PB est le nom de la PaintBox et BM le nom d'un bitmap à déclarer dans la classe principale.

    À bientôt
    Gilles

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Oki merci bien

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Borland me dis que FPrinc->BM n'as pas de correspondance et il me demande si je dois l'enlever.
    Comment faire pour régler ceci ??

    Merci pour vos réponses

  11. #11
    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 !

    Si FPrinc est une TForm, la déclaration du bitmap ne suffit pas, il faut également le créer.
    A ce stade, dans le constructeur de FPrinc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BM = new Graphics::TBitmap;
    //Donc on sait aussi qu'il faut peut-être ceci :
    BM->Width = PB->Width;
    BM->Height = PB->Height
    //A ce stade... je n'en sait rien
    Dans la OnClose de FPrinc, détruire le bitmap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    delete BM;
    BM = NULL;
    Je ne comprends pas trop ce qu'on cherche à faire ici... en dehors du fait de chercher à fixer une couleur...
    Quelle est en particulier la technique employée pour dessiner ?
    On dessine sur le bitmap que l'on dessine ensuite sur le paintbox ?
    Bref... ça parait flou pour un début d'année !

    A plus !

  12. #12
    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
    Citation Envoyé par henderson Voir le message
    Je ne comprends pas trop ce qu'on cherche à faire ici...
    D'après ce que je comprends, on cherche à choisir une couleur sur la palette pour l'appliquer à un paint (remplissage/Fill).

    J'ai donc simplement donné des syntaxes à adapter en fonction du problème et de l'environnement du demandeur.

    À bientôt
    Gilles

Discussions similaires

  1. Modifier le texte d'une forme sélectionnée avec VBA
    Par Graphiste Powerpoint dans le forum VBA PowerPoint
    Réponses: 5
    Dernier message: 03/06/2009, 12h11
  2. Réponses: 4
    Dernier message: 28/03/2009, 20h01
  3. modifier la couleur d'une forme libre
    Par TheRealMike dans le forum Excel
    Réponses: 3
    Dernier message: 25/07/2007, 19h33
  4. [C#] [DataGrid] Modifier la couleur d'une ligne
    Par nalaya dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/08/2004, 13h11
  5. Réponses: 9
    Dernier message: 12/08/2002, 08h38

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