2012-09-26 3 views
6

저는 지금 몇 시간 동안이 작업을 해오 고 있지만, 제 삶을 살기에는 불가능합니다.winform 그림 상자 내부의 이미지 이동

내가하려는 것은 단순히 winform 응용 프로그램의 그림 상자 내에있는 이미지를 이동하는 것입니다. 내 이미지는 대략 1000x1000 픽셀이고 내 상자는 400x500과 같은 임의의 것입니다. 예를 들어 마우스를 클릭하면 이미지가 왼쪽으로 50 개 이동합니다. 그러나 이미지 상자는 같은 크기를 유지해야합니다.

그러나 내 인생에서 나는이 일을 할 수 없습니다. 내가 할 수 있었던 일은 다음과 같습니다.

 if (kinectController.hands[0].fingertips.Count == 1) 
     { 
      pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage; 

     } 

이 기능은 내 kinect 손가락 추적 응용 프로그램입니다. 따라서 응용 프로그램이 화면에서 단일 파인더 점을 확인하면 이미지가 중앙에 배치됩니다. 그러나, 결국 이미지가 내 손가락 움직임과 함께 움직이기를 원할 것입니다. 일단 이미지를 몇 픽셀 씩 옆으로 이동시키는 기본 단계를 수행하면됩니다.

이 문제에 도움을 주시면 감사하겠습니다.

답변

10

나는 약간의 연구를했으며 분명히 PictureBox 내에서 이미지를 옮기는 것은 쉬운 일이 아니며 가능한 최소한 만들 수있는 것을 찾을 수 없었습니다 (할 수있는 방법이 없다는 말은하지 않음). 그것).

그러나 "해결 방법"이 조금 생겼습니다.이 방법이 필요한지 확인하십시오.

  • 가 Panel 컨트롤을 만들고 크기는 이미지의 그러나 많이 은 에 해당 패널 장소의 내부 이미지와 PictureBox 컨트롤을
  • 를 표시하고 SizeMode을 설정하고자 할 :이 작업을 수행하려면 속성을 자동 크기 조정. 이제

, 당신은 클릭하고 PictureBox를 드래그, 실제로 그 안에 이미지를 이동하지 않습니다 때마다

private bool Dragging; 
private int xPos; 
private int yPos; 
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { Dragging = false; } 
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { 
    if (e.Button == MouseButtons.Left) { 
     Dragging = true; 
     xPos = e.X; 
     yPos = e.Y; 
    } 
} 
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { 
    Control c = sender as Control; 
    if (Dragging && c!= null) { 
     c.Top = e.Y + c.Top - yPos; 
     c.Left = e.X + c.Left - xPos; 
    } 
} 

이제 형태로이 코드를 추가하는 듯했으나 패널 내에서 PictureBox 컨트롤. 다시 말하지만, 정확히 무엇을 찾고 있었는지, 이것이 어떻게 Kinect로 변환 될지는 확신 할 수 없지만, 이것이 올바른 방향으로 오게되기를 바랍니다.

관련 문제