cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
7 nov. 2006 à 19:15
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
8 nov. 2006 à 09:51
Bonjour,
Je crée une image (un graphique) à partir d'un tableau de point [X,Y] sur un controle utilisateur.
bitmap =
new Bitmap(Width, Height);
Graphics graph = Graphics.FromImage(bitmap);
bool
relierPoint =
false;
Point pointPrecedant =
new Point(0,0);
foreach(Point p
in _Historique)
{
if
(relierPoint)
{
graph.DrawLine(myPen2,pointPrecedant,p);
}
pointPrecedant.X = p.X;
pointPrecedant.Y = p.Y;
}
graph.Flush();
graph.Dispose();
this
.BackgroundImage = (Bitmap)bitmap.Clone();
bitmap.Dispose();
L'image est bien mise sur le controle mais lors je passe une fenetre par dessus (par exemple durant le debugage la fenetre de VS), lorsque je reviens sur ma form où est mon controle utilisateur, je vois le texte de VS par dessus les zones non écrites de mon controle.
Savez vous comment je peux rafraichir l'affichage? (j'ai deja testé le .refresh)
Merci
f.colo
A voir également:
[PB] creation image sur panel altérée lors du passage d'une form au dessus
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 8 nov. 2006 à 09:51
Merci pour cette solution mais j'ai réussi à ce qu'il n'y ait plus de probleme en mettant une colleur de fond à mon Image.
graph.FillRectangle(
new SolidBrush(Color.LightSteelBlue),0,0,Width,Height);
Comme ca, il y a de la couleur sur le fond lors du repaint, le controle sait ce qu'il doit dessiner, plutot que de laisser la persistance des anciennes fenetres au dessus.
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 8 nov. 2006 à 08:36
Le probleme est que la création de l'image peut être très longue selon le nombre de point (je calcule les coordonnées de chaque point en fonction de la taille du composant).
Ce qui me gène c'est que lors du OnPaint ca risque de prendre trop de temps à redessiner tout ca.
Je vais faire des essais de toute facon, creer l'image avant, et dans le OnPaint la remettre en backgroundImage.
Merci du conseil :)
Mais si il y a d'autres solution je suis preneur ^^
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 8 nov. 2006 à 09:32
si cest long et que ton composant ne peut pas être resize, pourquoi ne pas plutot calculer ton image au load et la placer en mémoire pour juste la recopier au paint? (a voir car si ton composant peut etre resize dynamiquement il faudra le recalculer au resize, ce qui est pas terrible...dans ce cas, pour eviter de recalculer 20 fois limage au moindre resize, utilise un flag pour dire qu'il faut recalculer limage au onpaint....ainsi ce nest long a recalculer au moment du paint que si ton controle a été resize...)