1

たぶん、私が知らない間違った方法でこれを行っているだけです。PNG があり、1000x1000 ピクセルです。私は五角形の形をしており、各セクションにボックスがあります。私がやりたいのは、PNG の一部である各ボックスをクリック可能なボックスにすることです。これを行う方法を調査しようとしましたが、この質問に対する答えが見つかりませんでした。前もって感謝します。

4

2 に答える 2

0

次のように、Contains メソッドを使用して、MouseMoveイベントMouseDown またはイベントを処理し、特定の Rectangle 内にあるMouseClickかどうかを確認できます。Cursor複数の HotSpot を処理するには、拡張する必要があります。

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 に答える
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 に答える