2012-10-01 85 views
1

我可能只是以这种错误的方式去做,我不知道。我有一个PNG,它是1000x1000像素。我的形状像五角大楼,每个部分都有一个盒子。我想要做的就是将每个作为PNG一部分的框都设置为可点击的框。我试图研究如何做到这一点,但我找不到这个问题的任何答案。先谢谢你。创建图像热点

+0

这是vba还是vb.net? –

+0

我是visual studio 2010,并创建一个视觉基本的Windows应用程序。 – user1124585

回答

0

您应该可以通过点击png时检查鼠标事件参数来完成此操作。

http://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs.aspx

Here是事件参数,以及如何将它们传递给函数或子程序的教程。

我相信this正是你正在尝试做的...

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 

引用的最后一个网站。

+0

谢谢!我会尽力实施这个ASAP – user1124585

0

您可以处理MouseMove事件和MouseDownMouseClick活动,并检查Cursor是一定的矩形内使用contains方法是这样的。它需要扩展以处理多个热点。

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 
+0

谢谢马克,这对我所需要的更精确。我试图找出一种方法来“切入”PNG,它根本不适合我。 – user1124585

+0

@ user1124585很高兴为您提供帮助 –