/ /クリックイベントでフォームにドットを描画する - 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

ありがとう!

回答:

回答№1の場合は3

三つの事:

1.パネルに描画する場合は、Me.CreateGraphicsではなくPanel1.CreateGraphicsを使用する必要があります。
2.ペンの幅はドットの大きさになります。代わりに1を使用
3. x、yを文字列に変換せずにcreateDotに渡します

あぶない:
パネルが無効になると(たとえば、別のウィンドウをその上に移動すると)、ドットは消えます。描画コードは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

回答№2の場合は0

パネル上にドットを作成する場合は、変更する必要があります Me.CreateGraphicsPanel1.CreateGraphics

ToStringをから削除する x=e.X y=e.Y