2011-10-24 12 views
0

キーを押したときに画像をパンする必要がありますが、コードが機能しません。ここにサンプルコードがあります。基本的に、私は何をしようとすることは、A/S/DまたはWキーをC#パンを実装する方法

public partial class MainWindow : Window 
{ 
    Point pan = new Point(); 
    double factorPan = 10; 

    public MainWindow() 
    { 
     InitializeComponent(); 

     canvas.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; 
     canvas.VerticalAlignment = System.Windows.VerticalAlignment.Center; 

はまず、私は長方形

 Rectangle rec1 = new Rectangle(); 

     rec1.Width = 50; 
     rec1.Height = 50; 
     rec1.Fill = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)); 
     rec1.Visibility = System.Windows.Visibility.Visible; 

     canvas.Children.Add(rec1); 
     Canvas.SetBottom(rec1, -100); 
     Canvas.SetLeft(rec1, -100); 
     this.KeyDown += new KeyEventHandler(TeclaApretada); 
    } 

    void TeclaApretada(object sender, KeyEventArgs e) 
    { 
     switch (e.Key) 
     { 
      case Key.W: 
       pan.Y = pan.Y - factorPan; 
       break; 
      case Key.S: 
       pan.Y = pan.Y + factorPan; 
       break; 
      case Key.A: 
       pan.X = pan.X + factorPan; 
       break; 
      case Key.D: 
       pan.X = pan.X - factorPan; 
       break; 
     } 
     actualizarCanvas(); 
    } 

    void actualizarCanvas() 
    { 
     canvas.Margin = new Thickness((pan.X), 0, 0, (pan.Y)); 
    } 
} 

答えて

1

てみてくださいを作成//押されたときに移動しながら長方形を「追跡」でありますあなたのCanvasに固定寸法を与えるか、少なくともそれを中心に置かないでください。そうでなければ、それに含まれる要素のサイズが必要になります。これは余白を持つ矩形だけです。

関連する問題