Mouvement picturebox pas fluide

Signaler
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009
-
Bonjour tout le monde,

dans le programme que je suis en train de dévelloppé j'aurais besoin de faire bouger une picture box a l'aide d'une souris. Pour cela, j'utilise ce code :

;   Private Sub frmJeu_MouseMove(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

        picRaquette.Left = e.X

    End Sub

Je précise que l'image de ma PictureBox est un png avec certains morceaux transparents.

Mais que je déplace ma souris sur ma page, le mouvement est non fluide : la picturebox sarrete puis réapparait là où est possitioner le curseur

Quelqu'un pourrait-il me dire d'où provient cela?

Merci pour votre reponse
Cordialement
Kevin PERRIAT

7 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,

Essaye sans rien promètre, quand tu fais ton déplacement de mettre ta picturebox.Enabled = False, car ton problème vient du fait que ta picture doit "recalculer" l'image tout au long de son déplacement...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009

Salut,

j'ai bien fait ce que tu m'as dit mais ça ne change rien au probleme
J'ai aussi essayé de mettre mon image en arriere plan de ma pictureBox mais ça ne change rien du tout

As-tu une autre idée?

Merci pour ton aide
Cordialement
Kevin PERRIAT
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Re,
Une autre idée..Ben, peut-être mettre les propriétés AutoRedraw False et Autosize False pendant ton déplacement...Si cela ne fonctionne pas, ne charge pas l'image pendant ton déplacement, puis une fois ton déplacement fini, recharge l'image...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009

Re,

aucun effet non plus Ca m'énerve un peu ces petis beugs de VB....

As-tu (encore) une autre idée?

EN tout cas merci pour ton aide

Cordialement
Kevin PERRIAT
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
salut, ton png prend combien en mémoire?
j'ai eu un problème une fois de fluidité parce que l'image que j'utilisais était un peu plus grosse que d'autres, j'ai dû la refaire avec photoshop pour que ça marche mieux.
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
32
Salut,

Il est sur qu'avec de la transparence ca va pas se tracer vite.
Je viens de faire des testes, avec la méthode du WndProc, c'est déjà beaucoup mieux. Y'a plus que les parties transparentes qui ont toujours un peu de mal à suivre.

Rappel de la méthode WndProc :
Public Class Brique
  Inherits System.Windows.Forms.PictureBox

  Private Const WM_NCHITTEST As Integer = &H84
  Private Const HTCLIENT As Integer = &H1
  Private Const HTCAPTION As Integer = &H2

  Protected Overrides Sub WndProc(ByRef m As Message)
    MyBase.WndProc(m)
    If m.Msg = WM_NCHITTEST Then
      If m.Result = CType(HTCLIENT, IntPtr) Then
        m.Result = CType(HTCAPTION, IntPtr)
      End If
    End If
  End Sub
End Class, ----
(Coloration syntaxique automatique par Kenji)

__________
  Kenji
Messages postés
76
Date d'inscription
samedi 28 janvier 2006
Statut
Membre
Dernière intervention
22 janvier 2009

Merci à vous 2 pour votre aide

Mon png fait 3.8 Ko ce qui je trouve très léger... Mais même si je ne mets qu'une couleur de fond (backColor), ma pictureBox rame... c'est normal?

Charles Racaud je vais tester ta méthode et je te tiendrais au courant. Mais il n'y aurait rien de plus simple?

Encore une fois merci à vous deux
Cordialement
Kevin PERRIAT