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 :

Raffraichissement Canvas TForm


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut Raffraichissement Canvas TForm
    Bonjour,

    je voudrais accélérer le traitement graphique de mon application.
    Pour cela, je voudrais que lorsque je dessine un Bitmap sur le Canvas de la fiche principale, seule la partie concernée par le changement soit dessinée.
    Or la procédure OnPaint efface tout le canvas avec la couleur de fond avant d'afficher mon Bitmap.
    Ce qui fait qu'en finalité, seul le Bitmap est affiché.

    Existe-til une solution à ce problème ?

  2. #2
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Il faudrait prendre un peu de recul de manière à bien cerner tout ce qui doit persister et tout ce qui évolue !

    Travailler avec un bitmap pour garder en mémoire ce qui doit être représenté et dans ce cas on peut raisonner en terme d'image de fond que l'on dessine en premier pour ensuite dessiner d'autres images ou effectuer d'autres opérations graphiques.
    Donc faire en sorte que tout puisse être redessiné dans la OnPaint (ce qui doit persister, ce qui se renouvelle ou ce qui se rajoute).
    On peut éventuellement s'en sortir assez facilement en développant des classes graphiques sachant se dessiner sur un canvas à partir de leurs propriétés (ce n'est peut-être pas utile ici ???).

    A plus !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Par défaut
    Bonjour,

    tu peux peut-être utiliser les composants Graphics32 avec lesquels on peut travailler sur des "layers" (Calques ?) comme avec Gimp ou Photoshop ou autre logiciel photo.

  4. #4
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Ouh là, j'ai pas bien compris vos réponses.

    Pour être plus précis, j'avais fait une version dans laquelle j'avais un bitmap, appelons-le ImageFond qui 'mémorisait' le canvas représentant le fond de la TForm principale.
    Ensuite j'exécutais quelques dessins sur ce bitmap, puis dans la procédure OnPaint, j'affichais ImageFond intégralement dans le Canvas de la fiche.

    Côté optimisation...ça craint. Réafficher un bitmap de 1024 x 768 pixels pour une petite modification de 32 x 32 pixels, c'est pas top !

    Donc l'idée est d'afficher directement dans le Canvas de la fiche, le petit bitmap de 32 x 32 pixels. Le problème est que dans ce cas, OnPaint commence par remplir le Canvas par la couleur de fond (donc cela efface tout), puis affiche le motif de 32 x 32 pixels.
    Il doit bien y avoir un moyen de préserver dans le Canvas de la fiche, tout ce qui n'est pas touché par la modification !

  5. #5
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Tu n'as pas pensé dessiner à la fois sur la form et sur le bitmap ?
    Comme ça, lors de la OnPaint... !

    A plus

  6. #6
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Excuse-moi Henderson mais je ne vois pas trop où tu veux en venir...

  7. #7
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Mille excuses,

    Vous aviez raison. Il y avait dans ma procédure de dessin, du code qui provoquait l'exécution de 'OnPaint'.

    En inhibant cette partie du code, maintenant lorsque je dessine sur le Canvas de la fiche, cela ne provoque pas l'appel à 'OnPaint'. Il n'y a donc pas de mystère.
    Merci à tous pour votre collaboration.

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

Discussions similaires

  1. Passer un text sur le Canvas d'une TForm dynamique
    Par Ardely dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2013, 12h09
  2. Réponses: 2
    Dernier message: 20/06/2012, 09h27
  3. Raffraichissement Canvas TForm
    Par rtg57 dans le forum Delphi
    Réponses: 10
    Dernier message: 26/04/2007, 17h30
  4. Timage et Canvas??
    Par vanack dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/04/2007, 11h38
  5. Réponses: 2
    Dernier message: 17/05/2002, 20h37

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