Certo che è normale, l'evento che si scatena al movimento dentro il controllo è MouseMove.
Innanzitutto per questo scopo si utilizza l'evento MouseEnter, l'evento MouseHover si verifica con un certo ritardo.
Gli eventi MouseHover e MouseEnter sono simili tra di loro, con la differenza che il primo si scatena quando il mouse si sofferma sopra il controllo, mentre il secondo si scatena non appena il mouse entra nel controllo.
Poi vedo che utilizzi delle immagini su file, che a loro volta impiegano un certo numero di millisecondi per essere caricate.
Puoi migliorare la situazione in questo modo:
codice:
Public Class Form1
Dim img1 As Image
Dim img2 As Image
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
img1 = Image.FromFile("C:\image1.jpg")
img2 = Image.FromFile("C:\image2.jpg")
PictureBox1.Image = img1
End Sub
Private Sub PictureBox1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
PictureBox1.Image = img2
End Sub
Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
PictureBox1.Image = img1
End Sub
End Class