Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[TIMAGE.CANVAS]PROBLÈME DE RAFRAICHISSEMENT


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Ce code utilisse un canvas de type Timage.
Il trace un petit tableau de 13x13 cases.

Il me l'affiche en 1/2s, et pendant l'execution, la moindre opération su le canvas (par exemple rajouter un petit carré) réinitialise complement l'affichage du canvas, soit 0.5s pour chaque opération. (le canvas s'efface puis se recrée par un balayage de gauche a droite).

Sachant que je souhaite utiliser un timer pour faire une opération toutes les demi seconde c'est très génant, et je n'arrive pas a trouver de solution a mon problème.  Quelqu'un peut-il m'éclaircir? Ou m'apporter une solution alternative pour éviter ces problèmes de rafraichissement..

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de japee le 20/12/2003 15:05:06 administrateur CS

Déjà, sans trop réfléchir, essaye donc ceci :

dans "procedure TForm1.FormActivate(Sender: TObject)"

tu ajoutes

Form1.DoubleBuffered := True; // voir aide en ligne de Delphi

Tu vas voir la différence ;)

signaler à un administrateur
Commentaire de achtouf le 25/12/2003 00:01:53

Salut

J'avais fait un petit jeu (Nibbles ou serpent) il y a quelques temps sous Delphi 4 en utilisant un composant TImage. Lors du passage à Delphi 7 je me suis redu compte que ca n'arrétait pas de scintiller meme avec DoubleBuffered. => Bug connu de Delphi4.
Il est recommander d'utiliser un composant TPaintBox qui ne pose pas le pb (je crois).
Je crois cependant qu'il est possible de surcharger une méthode pour empécher au TImage  de se rafraichir comme ca. Mais je sais plus comment  :-(

signaler à un administrateur
Commentaire de MacaDaMsDamien le 26/12/2003 16:23:20

Voici une réponse que j'ai obtenu (merci jmic):

"J'ai utilisé deux Canvas différents. Un qui correspond à ce qui est affiché, l'autre qui permet de travailler. C'est ça qui évite le clignottement.

Pour être complet, sur le problème de vitesse, j'ai utilisé une autre astuce, basée sur un 3ème Canvas.
Imaginons que l'on veuille faire le dessin d'une partie d'échec, avec le mouvement des pièces.
Le premier Canvas va contenir le "fond" qui n'est pas modifié (ou très peu), c'est-à-dire l'échiquier.
Le deuxième Canvas va être le canvas de travail vu précédemment,
Le troisième est celui qui est effectivement visible à l'écran.

Les manips sont les suivantes :
- Préparation une fois pour toute du canvas de fond.
A chaque itération
- Copie du 1er Canvas sur le deuxième.
- Ajout de la position des pièces sur le 2eme canvas
- Copie du 2eme canvas sur le 3eme.

Ca permet de gagner du temps (à chaque itération) si le dessin du fond est long à dessiner (c'était mon cas dans mon application)."

signaler à un administrateur
Commentaire de MacaDaMsDamien le 28/12/2003 01:27:15

Voila j'ai résolu mon problème très simplement: J'ai remplacé mon Timage par un Tpaintbox, l'affichage est instantané :D

signaler à un administrateur
Commentaire de ManChesTer le 30/12/2003 13:49:38 administrateur CS

une astuce simple :

Procedure Maform.paint;
begin
//travail dessins copies &co sur monbmp
bitblt(form1.canvas.handle,0,0, monbmp.canvas.handle,0,0,200,200,srccopy);
end;

Dans un timer faire:
Procedure Maform.OnTimer(sender:Tobject);
begin
SendMessage(Handle,wm_Paint,0,0)
end;

Et voila.... eventuelement devier WM_ERASEBKGND pour encore de meilleurs perfs...

Bon Coding...

ManChesTer.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.