我可能只是以我不知道的错误方式解决这个问题。我有一个 PNG,它是 1000x1000 像素。我的形状像一个五边形,每个部分都有一个盒子。我想要做的是让每个作为 PNG 一部分的框成为一个可点击的框。我试图研究如何做到这一点,但我找不到这个问题的任何答案。先感谢您。
问问题
1979 次
2 回答
0
您应该能够通过在单击 png 时检查鼠标事件参数来完成此操作。
http://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs.aspx
这是关于事件参数以及如何将它们传递给函数或子例程的教程。
我相信这正是你想要做的......
Private Sub PictureBox1_MouseDown( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles PictureBox1.MouseDown
Dim myPicBox As PictureBox = sender
Select Case e.Y / myPicBox.Height
Case Is > 2 / 3
Debug.WriteLine("It's in the bottom third")
Case Is > 1 / 3
Debug.WriteLine("It's in the middle third")
Case Else
Debug.WriteLine("It's in the top third")
End Select
End Sub
- 参考上一个网站。
于 2012-10-01T15:18:38.593 回答
0
您可以使用这样的 Contains 方法处理MouseMove
事件和MouseDown
或MouseClick
事件并检查是否Cursor
在某个 Rectangle 内。它需要扩展以处理多个热点。
Public Class Form1
Dim hotspot1 As Rectangle = New Rectangle(25, 25, 50, 50)
Private Sub PictureBox1_MouseClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
If hotspot1.Contains(e.X, e.Y) Then
Beep()
End If
End Sub
Private Sub PictureBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If hotspot1.Contains(e.X, e.Y) Then
If Cursor <> Cursors.Hand Then Cursor = Cursors.Hand
Else
If Cursor <> Cursors.Default Then Cursor = Cursors.Default
End If
End Sub
End Class
于 2012-10-01T15:32:53.693 回答