Animation flip PictureBox ou Label horizontalement avec Click
Bonjour,
Je souhaite créer une animation qui se déclenche au clic et réalise un effet de retournement horizontal sur le Label1. Initialement, le texte de Label1 est défini sur "►", et je veux que chaque clic change la direction de la flèche, comme le montre la vidéo que j'ai jointe. Cependant, j'ai rencontré un problème avec le code actuel : le Label effectue une rotation de 90 degrés et disparaît.
la vidéo : https://drive.google.com/file/d/10uz...ew?usp=sharing
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Private RotationAngle As Double = 0
Private RotationSpeed As Double = 20 ' Vitesse de rotation (ajustez cette valeur pour contrôler la vitesse)
Private IsRotating As Boolean = False ' Indicateur de rotation en cours
Private Sub InitializeRotationTimer()
Timer1.Interval = 50 ' Réglez l'intervalle du timer pour contrôler la vitesse (50ms pour cet exemple)
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Const MaxRotationAngle As Double = 360 ' Réglez la valeur maximale à 360 pour une rotation complète
If IsRotating Then
RotationAngle += RotationSpeed
If RotationAngle >= MaxRotationAngle Then
RotationAngle = MaxRotationAngle ' Assurez-vous que l'angle ne dépasse pas 360 degrés
End If
Dim lCenterX As Long = Label1.Width / 2 + Label1.Left
Dim lWidth As Long = Label1.Width
' Assurez-vous que la largeur ne devienne pas nulle
Dim newWidth As Long = lWidth * Math.Abs(Math.Cos(RotationAngle * (Math.PI / 180)))
'If newWidth > 0 Then
System.Windows.Forms.Application.DoEvents()
Label1.Width = newWidth
Label1.Left = lCenterX - Label1.Width / 2
'End If
End If
End Sub
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
If Not IsRotating Then
IsRotating = True ' Démarrez la rotation si elle n'est pas déjà en cours
InitializeRotationTimer()
Timer1.Start()
Else
IsRotating = False ' Arrêtez la rotation si elle est déjà en cours
Timer1.Stop()
End If
End Sub |
Auriez-vous des conseils ou des suggestions pour résoudre ce problème ? Je vous remercie par avance pour votre aide !