cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 nov. 2004 à 18:38
De plus, c' etait pour expliquer comment utiliser le Paintbox, parce qu' il me semble que Allantel ne connaissait pas l' evenement OnPaint.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 nov. 2004 à 18:37
Oui je sais, mais ça s' affiche tellement vite que c' est une solution sans trop changer le code ...
Sinon, le mieux c de dessiner sur un TImage.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 15 nov. 2004 à 18:05
Mais ça nécessite a priori un redessinage perpétuel... puisqu'un simple pixel qui se fait recouvrir force la courbe à être redessinée lorsque ce dernier réapparait. Ce n'est pas le cas avec le TImage puisque l'image est déjà mémorisée. Mais après tout, pourquoi pas.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 15 nov. 2004 à 12:48
Non, pas la peine: utilise l' evenement OnPaint du PaintBox comme je te l' ai expliqué plus haut
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 13 nov. 2004 à 13:14
Il ne faudrait pas dessiner dans des TPaintBox le graph qui est "à longue durée de vie", car un coup de fenêtre dessus et c'est fini. Sauf si le dessin est réactualisé en permanence. Le TPaintBox offre juste un espace graphique sans aucune mémorisation. Il faut plutôt dessiner dans un TImage.Picture.Canvas (et non TImage.Canvas) dans lequel on aura pris soin de créer un bitmap:
with MonTImage.Picture.Bitmap.Create do
begin
Canvas.Brush.Color:=clBlack;
Canvas.Pen.Color:=clWhite;
Canvas.Pen.Width:=1;
PixelFormat:=pf4bit; //16 couleurs max
Width:=MonTImage.Width;
Height:=MonTImage.Height;
end;
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 11 nov. 2004 à 17:36
Il y a du bon code, mais juste une remarque:
fait le calcul de ton biorythme et minimise l' application (ou fait passer une fenetre devant ton application), quand tu reviens sur ton programme, le dessin a disparu (ouai, c' est con)!
Alors, pour resoudre ça tu dois enregistrer les parametres necessaires au dessin (soit la date de naissance etc ...) dans des variables. Pourquoi? Pour que tu puisses dessiner selon ces parametres lorsque ton application en a besoin. Disons qu après avoir cliquer sur le bouton 'Analyse', je peux modifier la date du TDateTimepicker mais je verrais les courbes selon les derniers parametres que j' ai enregistré en cliquant sur le bouton 'Analyse'.
Ensuite, tout le tavail de dessin, doit etre executé dans le OnPaint de ton Paintbox. Et voilà!
PS: n' oublie pas de faire ecran.repaint; dans le OnCick du bouton.
15 nov. 2004 à 18:38
15 nov. 2004 à 18:37
Sinon, le mieux c de dessiner sur un TImage.
15 nov. 2004 à 18:05
15 nov. 2004 à 12:48
13 nov. 2004 à 13:14
with MonTImage.Picture.Bitmap.Create do
begin
Canvas.Brush.Color:=clBlack;
Canvas.Pen.Color:=clWhite;
Canvas.Pen.Width:=1;
PixelFormat:=pf4bit; //16 couleurs max
Width:=MonTImage.Width;
Height:=MonTImage.Height;
end;
11 nov. 2004 à 17:36
fait le calcul de ton biorythme et minimise l' application (ou fait passer une fenetre devant ton application), quand tu reviens sur ton programme, le dessin a disparu (ouai, c' est con)!
Alors, pour resoudre ça tu dois enregistrer les parametres necessaires au dessin (soit la date de naissance etc ...) dans des variables. Pourquoi? Pour que tu puisses dessiner selon ces parametres lorsque ton application en a besoin. Disons qu après avoir cliquer sur le bouton 'Analyse', je peux modifier la date du TDateTimepicker mais je verrais les courbes selon les derniers parametres que j' ai enregistré en cliquant sur le bouton 'Analyse'.
Ensuite, tout le tavail de dessin, doit etre executé dans le OnPaint de ton Paintbox. Et voilà!
PS: n' oublie pas de faire ecran.repaint; dans le OnCick du bouton.