Graphisme en vb.net

phicarre Messages postés 3 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 9 septembre 2007 - 6 janv. 2006 à 19:09
 Utilisateur anonyme - 6 janv. 2006 à 21:28
Je viens de passer en VB.NET et ce n'est pas du gâteau ...



Quelques pistes pour m'aider sur l'aspect graphique (tutorial):

Je souhaite avoir sur une feuille un cercle qui change de couleur quand la souris passe dessus.

1 réponse

Utilisateur anonyme
6 janv. 2006 à 21:28
Bonsoir,

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.
0
Rejoignez-nous