Un bonjour au début de ton post et un merci à la fin aurait été beaucoup mieux.
(Voir /forum.v2.aspx?ID=627915http://www.vbfrance.com/forum.v2.aspx?ID=627915)
Faudra appliquer ces règles pour tes prochains messages.
Pour répondre à ta question:
On trace un cercle bleu si la souris n'est pas dessus, orange si elle est dessus.
Pour le savoir, on mesure le vecteur << centre du cercle, position souris >> et on le compare avec le rayon du cercle.
Si c'est plus grand, la souris est à l'extérieur
Si c'est plus petit, la souris est dans le cercle.
Cela donne:
Private CircleLocation As New System.Drawing.Point(120, 120)
Private CircleRadius As Single = 80
Private CircleColor As System.Drawing.Brush = Brushes.SkyBlue
Private HoverCircleColor As System.Drawing.Brush = Brushes.DarkOrange
Private MouseHoverCircle As Boolean
Private Sub Form_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If GetDistance(CircleLocation, e.Location) <= CircleRadius Then
If MouseHoverCircle = False Then MyBase.Invalidate()
MouseHoverCircle = True
Else
If MouseHoverCircle = True Then MyBase.Invalidate()
MouseHoverCircle = False
End If
End Sub
Private Sub Form_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
If MouseHoverCircle = False Then
e.Graphics.FillEllipse(CircleColor, CircleLocation.X - CircleRadius, CircleLocation.Y - CircleRadius, CircleRadius * 2, CircleRadius * 2)
ElseIf MouseHoverCircle = True Then
e.Graphics.FillEllipse(HoverCircleColor, CircleLocation.X - CircleRadius, CircleLocation.Y - CircleRadius, CircleRadius * 2, CircleRadius * 2)
End If
End Sub
Private Function GetDistance(ByVal Pt1 As System.Drawing.Point, ByVal Pt2 As System.Drawing.Point) As Single
Dim Delta As New Size(Pt1.X - Pt2.X, Pt1.Y - Pt2.Y)
Return CSng(System.Math.Sqrt(Delta.Width ^ 2 + Delta.Height ^ 2))
End Function
Voili, voilou, ya plus qu'a copier-coller le code.
Et bon coding.
Kenji
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.