/ / nakresliť bodku vo forme na kliknutie - vb.net, winforms

nakresliť bodku vo forme na click event - vb.net, winforms

Akákoľvek pomoc by bola ocenená. Ako vytvorím farebnú bodku na paneli, na ktorom používateľ klikne na svoju myš? Môžem získať súradnice kliknutia myši a vystupovať cez schránku správy, ale nemôžem nakresliť bodku na paneli, kde používateľ kliknul. Mám tieto kódy vyskúšané.

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

Vďaka!

odpovede:

3 pre odpoveď č. 1

Tri veci:

1.Ak čerpáte z panelu by ste mali použiť Panel1.CreateGraphics nie Me.CreateGraphics
2. Šírka pera je veľká pre bodku. Použite miesto 1
3. Nekonvertujte reťazce x, y na reťazce a odovzdajte ich do createDot

Upozornenie:
Akonáhle je panel znehodnotený (napríklad presuniete ďalšie okno nad ním), bodka zmizne. Výkresový kód by mal byť v prípade 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 pre odpoveď č. 2

Ak chcete vytvoriť bod na paneli, mali by ste zmeniť Me.CreateGraphics na Panel1.CreateGraphics

Odstrániť toString od x=e.X y=e.Y