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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !