2012-09-26 9 views
6

私はこれを数時間はやってみましたが、私の人生ではこれを可能にすることはできません。winformピクチャボックス内の画像を移動する

私がしようとしているのは、単にwinformアプリケーションの画像ボックス内にある画像を移動することです。私の画像はおよそ1000x1000ピクセルで、私のボックスは400x500のような任意のものです。たとえば、マウスをクリックすると、画像が左に50移動します。しかし、イメージボックスは同じサイズのままでなければなりません。

私の人生にとって、私はこれを働かせることはできません。私ができることは以下の通りです:

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

     } 

この機能は、私のキネクト・フィンガー・トラッキング・アプリ用です。したがって、アプリケーションが画面上で単一のファインダポイントを表示可能にすると、画像は中央に配置されます。しかし、私は最終的に画像が私の指の動きに沿って動くことを望んでいます。これは、画像を数ピクセルだけ横に動かす基本的なステップを実行した後に来ます。

これについてのお手伝いをいただければ幸いです。

答えて

10

私は少し研究を行い、明らかにPictureBox内の画像を移動するのは簡単ではありません。少なくとも、これを可能にするものは見つけられませんでした。それだけど)。

しかし、私は "回避策"のビットを思いついて、これがあなたのニーズに合っているかどうかを見てください。

  • は、Panelコントロールを作成し、大きさ、それはあなた がそれ で、そのパネルの場所インサイド
  • あなたのイメージを持つ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コントロール。再び、あなたが探していたものではなく、これがどのようにKinectに変換されるのかよく分かりませんが、これが正しい軌道に乗ることを願っています。

関連する問題