-
[Thread] et [TImage]
Bonsoir,
J'ai un petit soucis du, surement, à une non compréhension
du fonctionnement des Threads.
J'ai un TImage dans une TForm où je dessin directement dans le canvas.
J'ai un Thread, qui est dans une autre TForm, de mon programme qui
s'occupe d'une lecture de socket et lors de la réception d'informations doit
exécuter une fonction de mise à jour de mon TImage.
Mon soucis est que lors que mon Thread exécute la fonction
de ma fiche ou est mon TImage pour le mettre à jour mon,
l'image disparaît de ma fenêtre.
Et je ne veux pas faire de refresh qui ferait "scintiller" mon image
car les mise à jour se fond à un rythme de 1 par seconde.
Si c'est pas clair, je mettrai un exemple de mon code demain.
Une piste, une idée ?
D'avance, je vous remercie.
Zaadum
-
Ne prend pas un TImage mais un TPaintBox, où tu défini le OnPaint qui va lire dans un BitMap (voir aussi DoubleBuffered sur la Form), et l'astuce est de gèrer deux TBitmap, pendant que le Thread dessine sur le Bitmap A, le PaintBox utilise le B, une fois que le Thread a fini, tu substitue A dans B (via SectionCritique ou dans un Synchronize), c'est ce que fait DirectDraw, méthode Switch ... cela évite des instabilité lié à la modification de control par le thread au même moment qu'ils sont lus par la Form ... Erreur 1400 garanti !
Plus rapide que TPaintBox sujet à lire, et voir aussi les liens qu'il contient !
Je savais bien que j'avais pondu ce code, voir "Problèmes étranges avec le dual core"