User 9767265 Ответов: 1

Перемещение изображения внутри панели c#


Здравствуйте, я пытаюсь переместить изображение внутри панели управления.
У меня есть фоновое изображение:
событие Load:
панель 1.Раздел backgroundimage = ИМГ;
и образ:
событие Paint:
e.графика.DrawImage(img_player, new Point(0, 0));

Как я могу отправить переменную int из события key_down в событие paint и добавить код, подобный этому
e.графика.DrawImage(img_player, new Point(0+x, 0+y)); как я могу отправить переменную x и y?

private void Form1_KeyDown(object sender, KeyEventArgs e)
       {
           if (e.KeyData == Keys.Up)
           {
               int x = 10;
               int y = 0;

           }
and etc key.down,key.left,key.right same thing just x and y will be different..



img и img_player являются глобальными:
Image img = изображение.FromFile(@"D:\C#\Lavirint\Lavirint\images\map1.png");
Img_player образ = образ.FromFile(@"D:\C#\Lavirint\Lavirint\images\player.png");

1 Ответов

Рейтинг:
8

Pascal-78

Используйте X и Y в качестве членов вашего класса, обновите их в событии KeyDown и сделайте недействительным элемент управления, который рисует изображение сразу после этого.

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
  if(e.KeyData == Keys.Up)
  {
    x=10;
    y=0;
    imgCtrl.Invalidate();
  }
}
private void imgCtrl_OnPaint(object sender, PaintEventArgs e)
{
  e.Graphics.DrawImage(img_player, new Point(x,y));
}


Этот код должен быть адаптирован к вашим целям.


Sergey Alexandrovich Kryukov

Это достаточно хорошо, чтобы проиллюстрировать идею, но стиль кодирования-это путь прочь, и использование жестко закодированных координат 10, 0 практически не полезно. Если у ОП есть мозг, его можно переработать во что-то работающее. Я проголосовал за 4.
—СА

[no name]

Спасибо.. Можете ли вы сказать мне, как вызвать какое-то событие на кнопке, мне нужно вызвать событие Paint на кнопке 1, я попробовал это сделать:

panel1_Paint(null, null) но когда я запускаю программу и нажимаю кнопку, появляется ошибка исключения.. Спасибо!

[no name]

Я нашел его , мне просто нужно было удалить какую-то строку в моем коде, еще раз спасибо!