Bonjour,
Je travail présentement sur un petit logiciel de dessin. Le logiciel charge des polygones, lignes et points qui se trouve dans un fichier pour les afficher dans un contrôle de type PANEL. Lorsque la fenêtre subi une transformation oubien si elle est minimisez et agrandit, tout les éléments sont rechargés à chaque fois ce qui cause des scintillement et je vois mes éléments apparaitre un a un. De plus, j'ai fais une petite fonction qui permet à l'utilisateur de faire une sélection en traçant un rectangle à l'aide de la souris et cela n'arrange pas les choses puisqu'à chaque déplacement de la souris, la fenêtre subit un refresh ce qui cause le re-déssinage de tout les éléments (Il peut avoir plus de 3000 objets déssiné sur la carte...)
S'il serait possible que les polygones, lignes et points chargé reste afficher sans scintillement ça serait génial.
Voici le code:
Dans ma fonction qui ajoute les éléments:
Dans l'évènement Paint du PANEL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim l_obj_graphicPath As GraphicsPath For Each l_obj_point As Point In p_obj_Record.Points l_obj_graphicPath = New GraphicsPath l_obj_graphicPath.AddEllipse(l_obj_Point.X, l_obj_Point.Y, 10, 10) GraphicsList.Add(l_obj_graphicPath) Next
Merci beaucoup pour l'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub pnlCarte_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles pnlCarte.Paint e.Graphics.SmoothingMode = SmoothingMode.AntiAlias Dim l_obj_linearBrush As LinearGradientBrush For Each l_obj_graphPath As GraphicsPath In ShapeFile.GraphicsList e.Graphics.DrawPath(Pens.Black, l_obj_graphPath) l_obj_linearBrush = New LinearGradientBrush(l_obj_graphPath.GetBounds, Color.Beige, Color.OliveDrab, LinearGradientMode.ForwardDiagonal) e.Graphics.FillPath(l_obj_linearBrush, l_obj_graphPath) l_obj_linearBrush.Dispose() Next End Sub
Partager