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 :

Le canvas s'efface


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 89
    Points : 90
    Points
    90
    Par défaut Le canvas s'efface
    Bonjour,
    j'utilise les fonctions de dessin sur le canvas d'une forme.
    Mon problème est simple: quand je reduit la fenêtre et que je la rappel, mes dessins sur le canvas ont disparus... Ce comportement est surement du à l'appel de la méthode Refresh() de la form
    Comment faire pour garder mes jolies dessins sur le canvas de la form??

    Merci pour votre aide.
    Cordialement

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

    Il faut utiliser un bitmap sur le quel on dessine en même temps que sur la form.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics::TBitmap *Bitmap = new Graphics::TBitmap; //en global
    Dans le constructeur de la form, on peut fixer des dimensions maximales pour le bitmap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bitmap->Width = Screen->Width;
    Bitmap->Height = Screen->Height;
    Dans la OnPaint (et peut-être aussi dans la OnResize... il faudra tester), il suffira donc de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Canvas->Draw(0, 0, Bitmap); //Dessine le bitmap sur la form
    A plus !

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Ce que j'ai toujours fait:
    - OnPaint déclenche un timer,
    - le timer déclenche à son tour le rafraîchissement du dessin.
    Le timer ajoute simplement un retard entre l'exécution de la méthode OnPaint et le rafraîchissement de la figure. Sans celui-ci ça ne marche pas.
    La méthode de Henderson ci-dessus a toutefois l'air bien plus propre.

  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 !

    Par ailleurs, il est toujours possible d'aller un peu plus loin dans la modélisation de primitives
    graphiques à l'aide de classes très simples.
    Dans ce cas, c'est l'ensemble des méthodes de dessin propres à chaque objet qui fera émerger
    le dessin. L'avantage étant bien évidemment de pouvoir agir sur chaque objet graphique qui aura
    été ajouté à l'ensemble.

    A plus !

    Eventuellement consulter le travail de JEG :

    http://www.developpez.net/forums/viewtopic.php?t=18082

  5. #5
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 046
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 046
    Points : 8 259
    Points
    8 259
    Par défaut
    Citation Envoyé par Walm
    j'utilise les fonctions de dessin sur le canvas d'une forme.
    Mon problème est simple: quand je reduit la fenêtre et que je la rappel, mes dessins sur le canvas ont disparus...
    Il faut dessinner sur l'événement OnPaint.
    En général c'est suffisant.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 89
    Points : 90
    Points
    90
    Par défaut
    Bonjour,
    j'ai utilisé la technique de henderson.
    Merci à vous pour votre aide.

    Cordialement

    Walm

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

Discussions similaires

  1. Effacer un Canvas avant de redessiner dessus
    Par Kwentin dans le forum Java ME
    Réponses: 3
    Dernier message: 09/10/2006, 08h21
  2. Canvas : Effacer en gardant l'arrière plan
    Par Julien_C++ dans le forum C++Builder
    Réponses: 3
    Dernier message: 03/08/2006, 12h27
  3. Problème pour effacer un élément fait par canvas
    Par matech dans le forum Langage
    Réponses: 4
    Dernier message: 20/04/2006, 23h35
  4. [Tkinter].... Canvas: effacer un objet
    Par airod dans le forum Tkinter
    Réponses: 1
    Dernier message: 23/01/2006, 12h55
  5. Effacer Canvas d'un TImage
    Par Franck26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2005, 22h56

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