/ / narysuj kropkę w formularzu na zdarzenie click - vb.net, winforms

narysuj kropkę w formularzu na zdarzenie click - vb.net, winforms

Każda pomoc będzie doceniona. Jak utworzyć kolorową kropkę na panelu, w którym użytkownik klika myszką? Mogę uzyskać współrzędne kliknięcia myszą i wyświetlić je w oknie komunikatu, ale nie mogę narysować kropki na panelu, w którym użytkownik kliknął.

Private Sub createDot(x, y)
MsgBox(x & " " & y)
Dim myGraphics As Graphics = Me.CreateGraphics

Dim myPen As Pen

myPen = New Pen(Drawing.Color.Maroon, 20)

myGraphics.DrawRectangle(myPen, x, y, 1, 1)

End Sub

Private Sub Panel1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
missed += 1
lblMissed.Text = missed
Dim x, y As Integer
x = e.X.ToString
y = e.Y.ToString
createDot(x, y)
End Sub

Dzięki!

Odpowiedzi:

3 dla odpowiedzi № 1

Trzy rzeczy:

1. Jeśli rysujesz na panelu, powinieneś użyć Panel1.CreateGraphics not Me.CreateGraphics
2. Szerokość pióra jest duża dla kropki. Zamiast tego użyj 1
3. Nie konwertuj x, y na ciągi i nie przekazuj go do createDot

Uwaga:
Jak tylko panel zostanie unieważniony (na przykład przesuniesz nad nim kolejne okno), kropka zniknie. Kod rysunku powinien znajdować się w wydarzeniu Panel1_Paint` (Scott Chamberlain)

Private Sub createDot(ByVal x As Integer, ByVal y As Integer)

MsgBox(x.ToString & " " & y.ToString)
Dim myGraphics As Graphics = Panel.CreateGraphics

Dim myPen As Pen

myPen = New Pen(Drawing.Color.Maroon, 1)

myGraphics.DrawRectangle(myPen, x, y, 1, 1)

End Sub

Private Sub Panel1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
missed += 1
lblMissed.Text = missed

createDot(e.x, e.y)
End Sub

0 dla odpowiedzi nr 2

Jeśli chcesz utworzyć kropkę na panelu, powinieneś zmienić Me.CreateGraphics do Panel1.CreateGraphics

Usuń ToString z x=e.X y=e.Y