2015-04-28 105 views
1

任何帮助,将不胜感激。如何在用户点击鼠标的面板上创建彩色圆点?我可以获取鼠标点击的坐标并通过消息框输出,但我无法在用户点击的面板上绘制点。我有这些代码尝试。在点击事件中画一个点

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 

谢谢!

+0

什么是ToString? x,y必须是整数而不是字符串!你应该在'MsgBox','MsgBox(x.ToString()&“)&y.ToString())' –

回答

3

三件事改变Me.CreateGraphicsPanel1.CreateGraphics

删除的ToString:

1.如果你画面板上,你应该使用Panel1.CreateGraphics不是Me.CreateGraphics
2.笔的宽度要大一点。使用1而不是
3.Do不是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

4.这种方法不会很好,因为一旦面板失效(例如你移动另一个窗口将其移开)点将消失。绘图代码应该在'Panel1_Paint'事件中,鼠标单击应该排队绘制事件读取的某些数据结构,以便它知道在哪里绘制,然后调用'Panel1.Invalidate'。 –

+0

然后就可以这样做......创建全局变量x,y并在'mouse_down'事件和'paint event'中更改那里的值。使用'e.CreateGraphics'绘制 –

+0

谢谢。更改为Panel1.CreateGraphics使其工作。 – Ibanez1408

0

如果你想创建面板上的点,你应该从 ​​ y=e.Y