Vb.net 如何在单击矩形时激发事件

Vb.net 如何在单击矩形时激发事件,vb.net,visual-studio,Vb.net,Visual Studio,我试图在vb.net中制作一个游戏,并成功地将游戏板从二维矩形对象数组中绘制出来。我想知道一个矩形是否被点击,所以我想知道是否有人知道如何设置在点击矩形时运行的事件 捕获用于绘制矩形的对象(面板、窗体、图片框)的单击事件 检查鼠标指针位置并确定是否有任何矩形落在该位置 现在根据不同的标准执行操作 例如,只需创建一个新项目并添加以下代码 Dim r As Rectangle Private Sub Form1_Load(sender As Object, e As EventArgs)

我试图在vb.net中制作一个游戏,并成功地将游戏板从二维矩形对象数组中绘制出来。我想知道一个矩形是否被点击,所以我想知道是否有人知道如何设置在点击矩形时运行的事件

  • 捕获用于绘制矩形的对象(面板、窗体、图片框)的单击事件
  • 检查鼠标指针位置并确定是否有任何矩形落在该位置
  • 现在根据不同的标准执行操作

  • 例如,只需创建一个新项目并添加以下代码

        Dim r As Rectangle
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim p As New Panel
        p.Dock = DockStyle.Fill
        Me.Controls.Add(p)
        AddHandler p.Paint, AddressOf p_Paint
        AddHandler p.Click, AddressOf P_Click
    End Sub
    
    Private Sub p_Paint(sender As Object, e As PaintEventArgs)
        Dim p As Panel = sender
        Dim g As Graphics = Graphics.FromHwnd(p.Handle)
        r = New Rectangle(New Point(10, 10), New Size(100, 100))
        g.DrawRectangle(Pens.Black, r)
    
    End Sub
    
    Private Sub P_Click(sender As Object, e As EventArgs)
        Dim p As Panel = sender
        Dim po As Point = p.PointToClient(MousePosition)
        Me.Text = po.X.ToString + "," + po.Y.ToString
        If r.Contains(po) Then
            MsgBox("Yup!")
        End If
    End Sub
    
  • 捕获用于绘制矩形的对象(面板、窗体、图片框)的单击事件
  • 检查鼠标指针位置并确定是否有任何矩形落在该位置
  • 现在根据不同的标准执行操作

  • 例如,只需创建一个新项目并添加以下代码

        Dim r As Rectangle
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim p As New Panel
        p.Dock = DockStyle.Fill
        Me.Controls.Add(p)
        AddHandler p.Paint, AddressOf p_Paint
        AddHandler p.Click, AddressOf P_Click
    End Sub
    
    Private Sub p_Paint(sender As Object, e As PaintEventArgs)
        Dim p As Panel = sender
        Dim g As Graphics = Graphics.FromHwnd(p.Handle)
        r = New Rectangle(New Point(10, 10), New Size(100, 100))
        g.DrawRectangle(Pens.Black, r)
    
    End Sub
    
    Private Sub P_Click(sender As Object, e As EventArgs)
        Dim p As Panel = sender
        Dim po As Point = p.PointToClient(MousePosition)
        Me.Text = po.X.ToString + "," + po.Y.ToString
        If r.Contains(po) Then
            MsgBox("Yup!")
        End If
    End Sub
    

    “矩形对象”由什么组成?它们是刚画出来的吗?是的,刚画出来的很抱歉没有清晰,因为它们根本不是物体——它们是彩色像素。如果你知道它们是在哪里画的,你可以捕捉下面某个东西(面板?picturebox?表单?)的点击事件,并看到其中任何一个包含该点。但是在这一点上,你不需要一个事件,只要做你需要做的事情就行了。你可能想看看如何检测GDI+图形上的点击:“矩形对象”是由什么组成的?它们是刚画出来的吗?是的,刚画出来的很抱歉没有清晰,因为它们根本不是物体——它们是彩色像素。如果你知道它们是在哪里画的,你可以捕捉下面某个东西(面板?picturebox?表单?)的点击事件,并看到其中任何一个包含该点。但是在这一点上,你不需要一个事件,只要做你需要做的事情就行了。你可能想看看如何检测GDI+图形上的点击:注意:这只是为了测试目的。你可以做得更好。是的,这是我最后做的不完美,但它可以工作,并可以扩展,使它更强大,谢谢你。注意:这只是为了测试的目的。你可以做得更好。是的,这是我最后做的不完美,但它可以工作,可以扩展,使它更强大,谢谢。