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:
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
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
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
Merci beaucoup pour l'aide.