System.Drawing.Graphic ... refresh ?

dinytro Messages postés 31 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 juillet 2005 - 18 avril 2005 à 20:59
dinytro Messages postés 31 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 juillet 2005 - 18 avril 2005 à 22:45
Bonjour,

je souhaite faire une horloge dans une frm qui contient déjà des info
J'ai donc mis un panel et un pictureBox dedans avec pour ce dernier l'image en propriété de BackgroudImage.

A chaque seconde, je calcule les position des aiguilles mais j'ai un problème d'affichage :

Ce code ne marche pas : mes aiguilles ne s'effacent pas au fur et à mesure de l'affichage et du coup je me retrouve avec une aiguille en plus par seconde !
formGraphics.DrawImage (this
.BackgroundImage , pictureBox1.Bounds);
Alors que celui ci fonctionne masi ça ne me remet pas mon image, ça affiche une couleur noir et du coup j'ai plus les chiffres !

formGraphics.Clear(System.Drawing.Color.Black);

Que faire ?

6 réponses

dinytro Messages postés 31 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 juillet 2005
18 avril 2005 à 21:04
je me suis trompé :
formGraphics.DrawImage (this.BackgroundImage , pictureBox1.Bounds);

c'est pas this mais panel
formGraphics.DrawImage (panel.BackgroundImage , pictureBox1.Bounds);

je m'étais pas trompé dans le code ... donc évidement ça marche aps
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 avril 2005 à 21:18
Beh, tu fais ton clear, puis tu fais ton DrawImage juste apres, non ?

Mx
0
dinytro Messages postés 31 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 juillet 2005
18 avril 2005 à 21:42
non, tu penses bien que j'ai déjà essayé et ça marche pas ... ça reste noire, sans image.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 avril 2005 à 21:48
Y'a forcément quelque chose, on pourrait avoir un plus gros bout de code ?

Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dinytro Messages postés 31 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 juillet 2005
18 avril 2005 à 22:41
voila le code simplifié du Timer :


System.Drawing.Pen myPen =
new System.Drawing.Pen(System.Drawing.Color.GhostWhite);
System.Drawing.Brush myBrush =
new System.Drawing.SolidBrush(System.Drawing.Color.Black);
formGraphics = pictureBox1.CreateGraphics();
formGraphics.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

pictureBox1.Invalidate();
formGraphics.DrawImage (panel3.BackgroundImage , pictureBox1.Bounds);
myPen.Color = System.Drawing.Color.White;
myPen.Width=3;
formGraphics.DrawLine (myPen, (
int) omx, (
int) omy, (
int)mmx, (
int) mmy);
formGraphics.DrawLine (myPen, (
int) ohx, (
int) ohy, (
int)hx, (
int) hy);

myPen.Color = System.Drawing.Color.LightSkyBlue;
myPen.Width=2;
formGraphics.DrawLine (myPen, (
int) CenterX, (
int) CenterY, (
int)sx, (
int) sy);
formGraphics.DrawLine (myPen, (
int) osx, (
int) osy, (
int)CenterX, (
int) CenterY);



Voilà.
Le invalidate me fait clignoter les aiguilles mais pas l'image.C'est donc un peu mieux mais c pas ça quand même
je tien à dire aussi que je me suis servi d'un des codes sources de ce site sur une horloge mais l'open source c'est fait pour ça.
Le nom de l'auteur figure évidement dans la portion de code concernée.

Dans une fenêtre ça marche mais apparement avec le panel il aime pas ...
Enfin je sais pas si c'est ça mais c'est la seule différence avec l'originale.

Merci
0
dinytro Messages postés 31 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 juillet 2005
18 avril 2005 à 22:45
C'est bon, un simple refresh suffisait !

Merci à tous
0
Rejoignez-nous