gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 7 août 2012
-
23 déc. 2011 à 13:27
Utilisateur anonyme -
24 déc. 2011 à 16:16
Bonsoir, je vous explique mon problème, je veux faire déplacer une image, contenue dans une PictureBox aléatoirement dans ma fenêtre. J'y suis arrivé, cependant mon image étant une GIF, son fond est transparent, et lorsqu'elle se déplace, pendant quelques secondes elle garde le fond de l'image de fond de ma Form de là où elle se trouvée avant.
On m'a parlé du double buffering pour la redessiner correctement, mais je ne m'en suis jamais servi, alors je voudrais savoir si quelqu'un peut m'aider, lien, tuto, doc, technique d'approche ?
Voici mon code pour que vous voyez un peu mieux quel est mon problème:
Public Class Form1
Dim Déplacement As Integer = 10
Dim NewPosLeft, NewPosTop As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.Left = 0
PictureBox1.Top = 0
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'Timer1.Enabled = False
Dim Rand As New Random
NewPosLeft = Rand.Next(Me.Width - PictureBox1.Width)
NewPosTop = Rand.Next(Me.Height - PictureBox1.Height)
NewPosLeft = (Int(NewPosLeft / Déplacement)) * Déplacement
NewPosTop = (Int(NewPosTop / Déplacement)) * Déplacement
Do
Application.DoEvents()
System.Threading.Thread.Sleep(20)
If PictureBox1.Top < NewPosTop Then
PictureBox1.Top += Déplacement
ElseIf PictureBox1.Top > NewPosTop Then
PictureBox1.Top -= Déplacement
End If
If PictureBox1.Left < NewPosLeft Then
PictureBox1.Left += Déplacement
ElseIf PictureBox1.Left > NewPosLeft Then
PictureBox1.Left -= Déplacement
End If
Loop Until PictureBox1.Left NewPosLeft And PictureBox1.Top NewPosTop
End Sub
End Class
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 7 août 2012 23 déc. 2011 à 15:52
Bonjour, merci de m'avoir répondu.
On m'a déjà parlé de tout ça, mais mon problème n'est pas le clignotement, juste que lors de son déplacement le fond de mon image garde temporairement le fond de l'endroit où elle se trouvait avant sur la Form.
juste que lors de son déplacement le fond de mon image garde temporairement le fond de l'endroit où elle se trouvait avant sur la Form
Une petite astuce consiste à rendre invisible le picturebox (picturebox.visible = false) avant le déplacement. Puis de le rendre visible à nouveau après le déplacement.
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 7 août 2012 24 déc. 2011 à 14:30
Bonjour, et merci d'avoir répondu.
J'ai arrêté l'autre topic, parce que c'était un autre problème et parce que Ucfoutu était tétu (c'est tout a son honneur ) et ne voulait pas réellement comprendre mon problème, d'ailleurs vous vous trompez vous aussi. Je n'ai pas réellement un problème de scintillement et j'ai déjà essayé le double buffer.
J'ai posté mon code exprès pour que tout le monde puisse comprendre et m'aider, mais personne n'a l'air décidé à copier/coller ce bout de code
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 7 août 2012 24 déc. 2011 à 14:51
GIF ou PNG c'est pareil, tu as raison la faute vient de mes pixels transparents :(
Et mon code est celui du 1er poste de ce sujet, c'est le code de toute ma Form, tu ajoute un Timer, et une PictureBox, c'est tout
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 7 août 2012 24 déc. 2011 à 16:03
Je t'ai envoyé tout mon projet donc avec le fond et le GIF, sur l'adresse hotmail que tu m'as passé juste avant.
Merci de t’intéresser autant à mon cas.
Bonne fêtes.