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 :

Canvas : Effacer en gardant l'arrière plan


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 Canvas : Effacer en gardant l'arrière plan
    Bonsoir,
    J'ai une PaintBox sur une Form, je veux effacer par exemple un rectangle tout en gardant l'image d'arrière plan, je fais comment car il n'y a pas de couleur prévu à cet effet pour réappliquer chaque pixel formant l'image d'arrière plan.

    J'avais pensé à jouer avec le mode de Brush...
    Ou mettre une image sans bitmap...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                            switch (tab[y][x])
                            {
                            case 0 : TetrisForm->PaintBox1->Canvas->Brush->Style=bsClear;
                            case 1 : TetrisForm->Canvas->Brush->Bitmap=TetrisForm->P1->Picture->Bitmap; break;
                            case 2 : TetrisForm->Canvas->Brush->Bitmap=TetrisForm->P5->Picture->Bitmap; break;
                            case 3 : TetrisForm->Canvas->Brush->Bitmap=TetrisForm->P9->Picture->Bitmap; break;
                            case 4 : TetrisForm->Canvas->Brush->Bitmap=TetrisForm->P13->Picture->Bitmap; break;
                            case 5 : TetrisForm->Canvas->Brush->Bitmap=TetrisForm->P17->Picture->Bitmap; break;
                            case 6 : TetrisForm->Canvas->Brush->Bitmap=TetrisForm->P21->Picture->Bitmap; break;
                            }
                            TetrisForm->PaintBox1->Canvas->Draw(x*20,y*20,TetrisForm->Canvas->Brush->Bitmap);
                             TetrisForm->PaintBox1->Canvas->Brush->Style=bsSolid;
    Besoin d'une solution.. Merci

  2. #2
    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
    Salut,

    Je ne sais pas si cela va t'aider, mais regarde du coté de CopyRect dans l'aide de BCB. Peut-être que ca pourra de guider

    @+

  3. #3
    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
    Ce code est censé copié le carré d'arrière plan correspondant aux coordonnées du rectangle et d'effacer ce dernier en le mettant sur la Paintbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          TetrisForm->Canvas->CopyRect(TetrisForm->Image2->ClientRect,TetrisForm->Image1->Canvas,Rect(x,y,x2,y2));
                                     TetrisForm->Canvas->Brush->Bitmap=TetrisForm->Image2->Picture->Bitmap;
            TetrisForm->PaintBox1->Canvas->Draw(x,y,TetrisForm->Canvas->Brush->Bitmap);
    Aurais-je oublié quelque chose ?

  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
    Une condition placée au mauvais endroit et toute votre logique est réduit à néant...
    Pour ce qui en est de ce sujet : j'ai mis les pixels de la Paintbox égaux à celle de mon fond d'écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       for (int g=x; g<x+21; g++)
                                     {
                                            for (int h=y; h<y+21; h++)
                                            {
                                                    TetrisForm->PaintBox1->Canvas->Pixels[g][h]=TetrisForm->Image1->Canvas->Pixels[g][h];
                                            }
                                     }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/10/2014, 12h58
  2. Changer la couleur d'arrière plan du canvas
    Par ziad.shady dans le forum Flex
    Réponses: 2
    Dernier message: 13/08/2008, 18h02
  3. ligne Canvas en arrière plan
    Par bhahmed dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/11/2006, 23h39
  4. [JMenu][Canvas] Pti problème de JMenu à l'arrière plan !
    Par sozie9372 dans le forum Composants
    Réponses: 4
    Dernier message: 16/12/2005, 12h20
  5. changer l'image d'arrière plan du bureau
    Par etenclin dans le forum MFC
    Réponses: 7
    Dernier message: 22/08/2002, 16h54

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