C # Как реализовать Пан? - PullRequest
       22

C # Как реализовать Пан?

0 голосов
/ 24 октября 2011

Мне нужно панорамировать некоторые изображения при нажатии клавиши, но мой код не работает. Вот пример кода. По сути, я пытаюсь «следовать» прямоугольнику, пока он движется при нажатии клавиш 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));
    }
}

1 Ответ

1 голос
/ 25 октября 2011

Попробуйте дать вашему Canvas фиксированное измерение, или, по крайней мере, не центрируйте его.Если вы этого не сделаете, он принимает размер элементов, которые он содержит, который является только вашим прямоугольником с полями.

...