Bonjour,

Je cherche à faire "scroller" une image dans un contrôle. Je pense avoir le code qu'il faut mais il manque cruellement de performances etant donné que j'utilise une grosse image (une carte du monde).
J'ai sur une forme (form1) un contrôle panel (panel1) qui contient un picture box (picturebox1). Le panel1 a la propriété autoscroll.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
Dim bmpWorld As Bitmap = New Bitmap("monfichier.jpg")
Dim g1 As Graphics = Graphics.FromImage(bmpWorld)
Picture1.image=bmpWorld
Déjà, avec ça quand j'utilise les scrollbars l'affichage a du mal à suivre. Mais le pire c'est quand je déclenche une procédure de "scrolling" automatique, qui me permettrais de déplacer l'image automatiquement à partir d'un évenement (genre quand la souris passe sur une zone de la carte) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    Sub PanLeft()
        Dim start As Single
        Dim Point1 As Drawing.Point = Panel1.AutoScrollPosition
        Panning = True
        While Panning
            start = CSng(Timer)
            While CSng(Timer) < start + 0.1
                Application.DoEvents()
            End While
            Point1.X += 10
            Panel1.AutoScrollPosition = Point1
        End While
    End Sub
J'ai mis un timer pour contrôler la vitesse de défilement, mais en fait il ne sert à rien car le scrolling est beaucoup trop lent.
Comment faire pour optimiser cela? J'ai quelques idées mais je voudrais l'avis d'experts qui auraient déjà expérimenté la dessus... Merci.