Вы, вероятно, хотите наследовать от Форма и переопределить метод OnPaint . Вам, вероятно, также потребуется Invalidate () каждый раз, чтобы принудительно перекрасить. Это создаст простой игровой цикл и позволит вам довольно быстро обновлять экран.
В вашем методе OnPaint вы обновите позицию объекта на основе того, сколько времени прошло с момента последнего вызова метода OnPaint и какая клавиша была нажата последней. Вы, вероятно, сделаете это, используя скорость следующим образом:
newPosition = oldPosition + (elapsedTime * velocity)
Значение скорости будет изменяться в зависимости от того, какую клавишу вы нажимаете (то есть отрицательное для левого, положительное для правого). Вам также понадобится переменная и некоторый код, чтобы отслеживать, движется ли он горизонтально или вертикально.
Это довольно низкоэффективный способ сделать это (то есть взломать). Если вы хотите придерживаться Windows, но получить лучшую производительность без особых усилий, вы можете заглянуть в XNA . Если вы хотите гораздо более высокую производительность и готовы выполнять значительно больше работы, изучите Interop с DirectX и Win32 API или просто переключайтесь между собой.