Développement graphique dans C++ Builder 6?

Résolu
Kilgayne Messages postés 3 Statut Membre -  
 CARL_GMAN -
J'essaie actuellement de créer un jeu simple dans Borland C++ Builder 6 mais j'ai certains problèmes avec l'affichage des graphiques. Par exemple, voici le code faisant rebondir horizontalement un graphique contenu dans ImageList1:

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    Canvas->Pen->Color = clMaroon;
    Canvas->Brush->Color = clBlack;
    Canvas->Rectangle(0, 0, Width, Height);
    if (posx>=Width-16) direction=1;
    if (posx<=-16) direction=0;
    if (!direction) posx+=4;
    else posx-=4;
    ImageList1->Draw(Canvas,posx,32,0,1);
}


Tout fonctionne bien mais on peut remarquer une bande noire passant par dessus le graphique par intermittence, montrant que le canvas se rafraichit après toutes modifications et non pas seulement à chaque paint(). Comment faire pour que le canvas se rafraishisse seulement après y avoir mis tous les graphiques?

8 réponses

  1. glm
     
    Bonjour je voudrai télécharger c buider 6, pour programmer mais ji arrive pa
    . j'ai un pc pour bureau et g vista
    comment dois-je faire?
    svp aidez moi
    jen ai besoin pour bosser et m'entrainer j'ai un examen à passer
    svp
    2
  2. lirey83 Messages postés 76 Statut Membre 13
     
    En général, pour éviter ce genre de problème, on travaille dans un bitmap temporaire et une fois le dessin terminé dans le bitmap, on le transfère dans le canvas.
    1
    1. Kilgayne Messages postés 3 Statut Membre
       
      Est-ce que je pourrais connaitre la bonne façon de faire ça? J'ai essayé de dessiner dans un contrôle Image temporaire et de le transférer sur un autre mais ça ne fonctionne pas, il y a toujours un glitch.
      0
    2. lirey83 Messages postés 76 Statut Membre 13
       
      Voilà ce que cela pourrait donner avec une image stockée dans un TImage :
      void __fastcall TForm1::Timer1Timer(TObject *Sender)
      {
        static int posx = 0;
      
        // Création d'un bitmap temporaire
        Graphics::TBitmap *bitmap = new Graphics::TBitmap();
        bitmap->Width = Width;    // Donne les dimensions du Canvas au bitmap
        bitmap->Height = Height;
      
        // On dessine dedans
        bitmap->Canvas->Pen->Color = clMaroon;
        bitmap->Canvas->Brush->Color = clBlack;
        bitmap->Canvas->Rectangle(0, 0, Width, Height);
        posx += 20;  // Translation en X de 20 pixels
      
        // Pour la demo, j'utilise une image que j'ai mis dans un TImage
        bitmap->Canvas->Draw(posx,0,Image1->Picture->Graphic);
      
        // On recopie le bitmap dans le Canvas de la form
        Canvas->Draw(0,0,bitmap);
      
        // Suppression du bitmap temporaire
        delete bitmap;
      }
      
      0
      1. Kilgayne Messages postés 3 Statut Membre > lirey83 Messages postés 76 Statut Membre
         
        Je suis très surpris mais ça marche bien! Merci infiniment!
        0
  3. Ska
     
    slt je viens de debuter avec c++ builder et j'aimerai avoir des cours ou des tutos pour pouvoir bien maitriser le logiel.
    merci d'avance.
    1
  4. nabila
     
    je doi pouvoire construire un graph de control a partir d1 programme ecrit en pascal esk kelk1 pourait m'aidé.help me plz
    merci d'avance
    0
    1. bimbrahim
       
      salut nabila je suis brahim ingénieur en electronique ( USTHB) , je travail dans un centre de recherche a alger , je développe quelque logiciels j'aimerai echanger qlque idéés avec vous et te connaitre si c'est pôssible bien sur
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. hatem
     
    svp je cherche du documentation ou de code source pour en c++ builder pour representer des graphique ou histogramme et comment faire translater une image et le faire tourner dans toute les direction et comment binarise une image
    0
  7. 123456
     
    donner moi le logiciel c++ builder 6
    et merci
    0
    1. Célien Messages postés 5702 Date d'inscription   Statut Membre Dernière intervention   1 995
       
      C++Builder 6 c'est payant
      0
  8. nojoume
     
    je veux un catalogue d'utilisation de c++ builder
    0
    1. Célien Messages postés 5702 Date d'inscription   Statut Membre Dernière intervention   1 995
       
      C'est quoi ça ?
      0
      1. Alf-Red > Célien Messages postés 5702 Date d'inscription   Statut Membre Dernière intervention  
         
        je pense qu'il voulait un manuel (un mode d'emploi)
        0
  9. CARL_GMAN
     
    Je ne suis pas sûr que ce soit ça le problème mais si tu utilises des graphiques qui se rafraîchissent il faut toujours mettre ta Form contenant ce graphique en DoubleBuffered, ça permet d'éviter le scintillement car l'image est d'abord placé dans un buffer avant d'être affichée.
    0