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.
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 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
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.
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
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.
Partager