ооо .... с чего начать?Ладно, по одной вещи за раз.
Первое отключено, у вас бесконечный цикл:
for (x = 0; x >= 0; x += 2)
{
pb1.Location = new Point(0 + x, 20);
}
Таким образом, приложение никогда не будет проходить дальше одного тика.
Во-вторых вы работаете в диалоге .... который я действительно не рекомендую.Замените:
f.ShowDialog();
на:
Application.Run(f);
С вашим program.cs, вероятно, выглядит примерно так:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Shoot shoot = new Shoot();
shoot.Launch();
Если вы уже находитесь в WinFormприложение, тогда просто .Show () форма и .Hide () любые предыдущие формы.
В-третьих ... и я ценю, что вы, вероятно, просто веселитесь здесь ... но в любом случаеЭто довольно плохой способ создать игру с использованием WinForm.Элементы управления Windows не предназначены для использования таким образом, и в конечном итоге вы столкнетесь с рядом проблем, связанных с отсечкой, прозрачностью и другими проблемами рендеринга.Я бы порекомендовал обновить игру, нарисовав ее в границах элемента управления, который занимает всю форму.Таким образом, вы можете выполнить весь рендеринг одним ударом вместо того, чтобы полагаться на множество отдельных методов рисования каждого элемента управления, который вы используете.Он также будет лучше масштабироваться при увеличении количества спрайтов на экране (поскольку элементы управления являются относительно тяжелыми объектами).
Я настоятельно рекомендую прочитать этот FAQ в GDI +.Это тот самый, который помог мне оценить, как хорошо рисовать в WinForm много лет назад.:)
Короче говоря:
- Организация вашего кода для создания изображений для каждого кадра игры
- Создание пользовательского элемента управления (объект, который наследуется от элемента управления)затем отобразить «текущее» изображение в графический объект (для этого переопределите метод OnPaint) для элемента управления.