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
Auriez-vous des conseils ou des suggestions pour résoudre ce problème ? Je vous remercie par avance pour votre aide !
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
Partager