2012-09-26 48 views
6

Tôi đã cố gắng làm điều này trong một vài giờ, nhưng đối với cuộc sống của tôi, tôi không thể làm cho nó có thể.winform di chuyển hình ảnh bên trong hình tượng

Điều tôi đang cố gắng chỉ đơn giản là di chuyển hình ảnh được tìm thấy trong một hộp hình trong ứng dụng biểu mẫu thắng. Hình ảnh của tôi là khoảng 1000x1000 pixel và hộp của tôi là thứ gì đó tùy ý như 400x500, vì vậy, ví dụ: khi tôi nhấp chuột, tôi muốn hình ảnh di chuyển 50 sang bên trái. Nhưng hộp hình ảnh phải giữ nguyên kích thước.

Đối với cuộc sống của tôi, tuy nhiên, tôi không thể làm việc này. Những gì tôi có thể làm là như sau:

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

     } 

Chức năng này dành cho ứng dụng theo dõi kinect ngón tay của tôi. Vì vậy, khi ứng dụng tìm thấy một điểm tìm kiếm duy nhất có thể hiển thị trên màn hình, hình ảnh được căn giữa. Tuy nhiên, cuối cùng tôi cũng muốn hình ảnh di chuyển cùng với cử động ngón tay của tôi, điều này sẽ đến khi tôi thực hiện bước cơ bản để di chuyển hình ảnh một vài pixel sang một bên.

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao.

Trả lời

10

Tôi đã nghiên cứu một chút và dường như di chuyển một hình ảnh trong một PictureBox không phải là nhiệm vụ dễ dàng, ít nhất tôi không thể tìm thấy bất kỳ thứ gì có thể làm được điều này (không nói rằng không có cách nào để làm nó mặc dù).

Tuy nhiên, tôi nghĩ ra một chút "giải pháp", xem liệu điều này có phù hợp với nhu cầu của bạn hay không. Để thực hiện điều này:

  • Tạo một điều khiển Panel, và kích thước nó để tuy nhiên hầu hết các hình ảnh mà bạn muốn hiển thị
  • Bên rằng nơi bảng một điều khiển PictureBox với hình ảnh của bạn trong đó và thiết lập SizeMode thuộc tính để Tự động kích hoạt.

Bây giờ, đặt mã này dưới hình thức của bạn

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; 
    } 
} 

Bây giờ bất cứ khi nào bạn nhấp và kéo trên PictureBox, nó sẽ không thực sự di chuyển hình ảnh bên trong nó, nhưng điều khiển PictureBox trong bảng điều khiển. Một lần nữa, không chính xác những gì bạn đang tìm kiếm và tôi không chắc chắn làm thế nào điều này sẽ chuyển đổi sang Kinect, nhưng tôi hy vọng điều này giúp bạn đi đúng hướng.

Các vấn đề liên quan