narfight
Messages postés129Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention 4 mars 2010
-
26 mai 2007 à 14:22
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 2022
-
26 mai 2007 à 17:40
Bonjours,
Je travail actuellement sur un programme en c# qui affiche dans un graphique ce que renvois une sonde de lumiére par le port rs232. Le probléme est que le graphique sintille orriblement. en effect, l'arret plan du graphique change de couleur par rapport à la valeur (en plus que la courbe) ce qui fait que le graphique n'est presque pas visible car tout le temps en reconstruction. A-t-il moyen de faire en sorte d'afficher le graphique qu'une fois fini ? ne pas voir toutes les opérations qu'il ce fait ?
Je vous donnes mon bout de code qui génére le graphique :
private void dessiner()
{
int correction = 0;
Graphics valeur = Graphics.FromHwnd(Ecran.Handle);
Ecran.BackColor = Color.FromArgb(beau_v, beau_v, beau_v);
valeur.FillRectangle(fond, new Rectangle(0, 0, Ecran.Width, Ecran.Height));
#region Affiche le graphique
for (int id = 1; id < nbr_point; id++)
{
if (datav[id].Y != -1)
{
if (datav[id - 1].Y != -1 || id > 1)
{
if (datav[id - 1].Y == -1)
{
correction = -1;
}
valeur.DrawLine(new Pen(Color.Red, 1), step_X * datav[id - 1 + correction].X, step_Y * (max - datav[id - 1 + correction].Y), step_X * datav[id].X, step_Y * (max - datav[id].Y));
correction = 0;
}
}
else
{
(...)
}
}
#endregion
#region Affiche niveau d'alert
(...)
#endregion
}
Merci d'avance pour votre aide et désolé si ma source est trop grande
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20223 26 mai 2007 à 16:48
Essaie ça
InitializeComponent();
//double buffering pour eviter le scintillement de l'ecra nlors du rafraichissement
this.SetStyle(
ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint |
ControlStyles.DoubleBuffer,
true);
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 26 mai 2007 à 15:13
Salut, il faut utiliser un double buffer, le framework propose plusieurs moyens de faire ça.. Le principe c'est de tout dessiner sur un bitmap en mémoire puis d'afficher ce bitmap à l'écran.