2012-09-26 35 views
6

我一直试图做几个小时,但对于我的生活,我不能让它成为可能。winform移动图片箱内的图像

我想要做的只是移动在WinForm应用程序中的图片框中找到的图像。我的图像大概是1000x1000像素,我的盒子像400x500那样是任意的,所以,例如,当我点击鼠标时,我希望图像向左移动50。但图像框应保持相同的大小。

然而,对于我的生活,我无法得到这个工作。我所能做的是以下几点:

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

     } 

此功能是为我的kinect手指跟踪应用程序。所以当应用程序在屏幕上发现一个可见的单个发现点时,图像就会居中。但是,我最终会希望图像随着手指的移动而移动,一旦我将图像移动到几个像素的基本步骤后,图像就会移动。

任何帮助,这将不胜感激。

回答

10

我做了一点研究,显然在PictureBox中移动一个图像并非易事,至少我找不到任何可以使这成为可能的东西(并不是说没有办法做到这一点它虽然)。

然而,我想出了一个“解决方法”,看看这是否符合您的需求。要做到这一点:

  • 创建一个面板控制,并调整其大小,以不过多像你 想在它 显示
  • 内部的面板位置与图像PictureBox控件,设置SizeMode属性添加到AutoSize。

现在,把这个代码在你的表单现在

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的拖累,实际上并不会移到里面的形象,但在面板内PictureBox控件。再一次,不是你正在寻找什么,我不知道这将如何转换到Kinect,但我希望这可以让你在正确的轨道上。