/ / малювати точку у формі на події кліку - vb.net, winforms

намалюйте точку у формі на події кліків - vb.net, winforms

Будь-яка допомога буде вдячна. Як створити кольорову точку на панелі, де користувач натискає мишу? Я можу отримати координати клацання мишею і вивести його через вікно повідомлення, але я не можу малювати точку на панелі, де користувач натиснув. Я спробував ці коди.

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

Дякую!

Відповіді:

3 для відповіді № 1

Три речі:

1. Якщо ви малюєте на панелі, ви повинні використовувати Panel1.CreateGraphics, а не Me.CreateGraphics
2. Ширина пера до великої для крапки. Використовуйте 1 замість цього
3. Не перетворюйте x, y в рядки та передайте його для createDot

Застереження:
Як тільки панель недійсний (наприклад, ви переміщаєте інше вікно над ним) точка зникне. Код малювання повинен бути в події Panel1_Paint (Скотт Чемберлен)

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 для відповіді № 2

Якщо ви хочете створити точку на панелі, вам слід змінити Me.CreateGraphics до Panel1.CreateGraphics

Видалити ToString з x=e.X y=e.Y