Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#如何实施pan?_C#_Wpf Controls_Margin_Point_Pan - Fatal编程技术网

c#如何实施pan?

c#如何实施pan?,c#,wpf-controls,margin,point,pan,C#,Wpf Controls,Margin,Point,Pan,当按下某个键时,我需要平移一些图像,但我的代码不起作用。下面是一个示例代码。基本上,当按下A/S/D或W键时,我试图做的是在矩形移动时“跟随”矩形 public partial class MainWindow : Window { Point pan = new Point(); double factorPan = 10; public MainWindow() { InitializeComponent(); canvas

当按下某个键时,我需要平移一些图像,但我的代码不起作用。下面是一个示例代码。基本上,当按下A/S/D或W键时,我试图做的是在矩形移动时“跟随”矩形

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

试着给你的
画布
一个固定的尺寸,或者至少不要将其居中。如果不这样做,它将采用它包含的元素的大小,这只是带有边距的矩形