2014-05-09 5 views
1

재미있는 딜레마, 나는 그림의 특정 부분에 대한 클릭 이벤트에 사용할 수있는 레이블을 완전히 보이지 않게 만들었습니다.VB.NET PictureBox/Controls

그때 사용하여 초점을 다른있는 PictureBox를 호출하는 클릭 이벤트를 사용하여 진정한 = picturebox3.visible ..

나는 데 문제가있다는 새로운 PictureBox에서 그에 PictureBox visibility..the 컨트롤을 호출 할 때 (보이지 않는 레이블)은 picturebox2의 그림에서 완전히 작동하지 않거나 사라지는 것처럼 보입니다.

누군가를 위해 일종의 "에뮬레이터"프로젝트를 만들려면 약 30 개의 서로 다른 그림으로이 작업을 수행해야합니다.

이것에 대한 아이디어가 있습니까? 필요한 경우 코드를 게시 할 수 있습니다. Picturebox + Picturebox의 컨트롤 = 두통.

Public Class InvisibleLabel 
Inherits Label 

Public Sub New() 
    Me.SetStyle(ControlStyles.Opaque, True) 
    Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False) 
End Sub 
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams 
    Get 
     Dim CC As CreateParams = MyBase.CreateParams 
     CC.ExStyle = CC.ExStyle Or &H20 
     Return CC 
    End Get 
End Property 

최종 클래스는이 사진의 특정 부분을 클릭 할 때 나는 그냥 사실 = picturebox2.visible 사용하고, 눈에 보이지 않는 레이블의 코드입니다.

+1

제거에 데 도움이됩니다 처리 라벨의 PictureBox MouseDown 이벤트를 사용하고 좌표를 확인하십시오. 코드가 있으면 예를 게시하십시오. – LarsTech

+0

업데이트 됨. 코드는 매우 단순합니다. mousedown 이벤트를 처리하는 방법을 모르겠습니다. – ShawnB

답변

1

내가 만든 3 텍스트 상자

당신이

를 참조하는 단지에 대해 '당신은 Y에 대한

TextBox2를 참조하는 단지에 대해'X에 대한

TextBox1에

Cur 이미지 현재 이미지를 비교합니다.

내에 PictureBox는 300,300

개인 서브 PictureBox1_MouseClick (개체로 보낸 사람, MouseEventArgs 형식으로 e)는 PictureBox1.MouseClick를

Dim LocX As Integer = e.X 
    Dim LocY As Integer = e.Y 
    TextBox1.Text = e.X.ToString 
    TextBox2.Text = e.Y.ToString 

    If LocX > 200 Then ' click right side op the picture , change LocX With LocY to make it bottom 
     If CurPicture.Text = "1" Then 
      PictureBox1.Image = My.Resources.Pic2 
      CurPicture.Text = "2" 
     ElseIf CurPicture.Text = "2" Then 
      PictureBox1.Image = My.Resources.Pic3 
      CurPicture.Text = "3" 
     ElseIf CurPicture.Text = "3" Then 
      PictureBox1.Image = My.Resources.Pic4 
      CurPicture.Text = "4" 
     ElseIf CurPicture.Text = "4" Then 
      PictureBox1.Image = My.Resources.Pic5 
      CurPicture.Text = "5" 
     ElseIf CurPicture.Text = "5" Then 
      PictureBox1.Image = My.Resources.Pic1 
      CurPicture.Text = "1" 
     End If 
    End If 

End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    PictureBox1.Image = My.Resources.Pic1 
    CurPicture.Text = "1" 
End Sub 

희망이 당신이 방법 :

1

사용 :

Private Sub PictureBox_MouseDown(sender As Object, e As MouseEventArgs) _ 
    Handles PictureBox.MouseDown 

    'The code to change the picture goes here 

End Sub 
+0

특정 지역에 대해 어떻게 설정합니까? 그것이 나를 잡아주는 부분입니다. 오른쪽 하단에있는 X, Y를 볼 수 있지만 클릭 영역을 설정하여 특정 작업을 수행하는 방법은 무엇입니까? – ShawnB

+0

완벽. 고맙습니다. – ShawnB