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 :

Probleme de rafraichissement


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Probleme de rafraichissement
    Bonjour,

    J'affiche une série de bitmap dans un controle Timage avec une vitesse de 10 image par seconde environ. Il doit y avoir un problème au niveau du rafraichissement puisque l'image scintille par endroit.
    J'utilise la méthode CreateDIBitmap pour créer mes images.

    Merci

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    A chaque raffraichissement appelle la méthode invalidate() ça devrait marcher

  3. #3
    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
    Je pense que dans ce cas il faut mieux utiliser un TPaintBox au lieu d'un TImage et contrôler soit-même le dessin dans le paint du TPaintBox.
    Dessiner dans le PaintBox puis effectivement Invalider le contrôle pour qu'il se rafraichisse.
    Cela diminue considerablement le flicker.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    viewInfo->Invalidate();
    et dans le paint
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    viewInfo->Canvas->Draw(0, 0, pBmp);
    ou pBmp est ici un TBitmap.

  4. #4
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Ni un TImage ni même un TPaintBox ne sont réputés pour faire de
    l'animation vidéo, parce qu'ils se dessinent par dessus autre chose, ne ce
    serait-ce qu'au minimum la Form. Alors pourquoi ne pas faire plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1->Draw(X,Y, Image->Picture->Bitmap);
    Tu peux aussi utiliser un TList pour pointer directement sur les bitmaps :
    on suppose une séquence en boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int IndexImage;
    ...
    Graphics::TBitmap *Bitmap = (Graphics::TBitmap*)Liste->Items[IndexImage % Liste->Count];
    Form1-Draw(X,Y, Bitmap);
    IndexImage++;
    A plus !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Effectivement, Timage n'est pas très approprié pour se que je voulais en faire.
    J'ai trouver un site qui traitait le problème.
    http://bcbdev.com/faqs/faq34.htm
    J'ai remplacé mon Timage par un PaintBox et j'ai redéfinit la méthode paint().
    Tout marche nikel maintenant !!

    Merci.

  6. #6
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Pour information il existe les DIBS :
    The DrawDib functions provide high performance image-drawing capabilities
    for device-independent bitmaps (DIBs). DrawDib functions support DIBs of 8-bit,
    16-bit, 24-bit, and 32-bit image depths.
    DrawDib functions write directly to video memory. They do not rely on functions
    of the graphics device interface (GDI).
    Extrait de l'aide MS mmedia rubrique DrawDib.

    A plus !

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

Discussions similaires

  1. [JLabel] probleme de rafraichissement
    Par zorm dans le forum Composants
    Réponses: 3
    Dernier message: 14/11/2005, 06h30
  2. [Image] Probleme de rafraichissement
    Par leyee dans le forum 2D
    Réponses: 4
    Dernier message: 31/10/2005, 22h26
  3. Probleme de rafraichissement Fenetre Win32 ...
    Par miaw dans le forum OpenGL
    Réponses: 1
    Dernier message: 09/05/2005, 08h59
  4. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

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