Слишком быстрое признание изображения недействительным

Я создал простое приложение, в котором игрок перемещает изображение влево и вправо. Перерисовываю только область плеера. Но если игрок держит ключ, движение будет слишком быстрым, и вы не сможете увидеть, как быстро движется изображение, а не мерцает «что-то». Есть способ исправить это? Я только начинаю и мне всего 14 лет, так что терпите меня. То, что я делаю, - это нажатие клавиши, я узнаю стрелку, а затем добавляю или вычитаю свойства X и Y класса игрока. На основании этого я делаю недействительной область вокруг игрока.


person FlyBoy    schedule 15.02.2011    source источник


Ответы (1)


Если основная проблема заключается в мерцании, вы хотите использовать двойную буферизацию (рисование в область памяти, а не на экран, а затем переключение этой области памяти для рисования). Попробуйте установить эти флаги в своей форме (в ее конструкторе):

SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
person Jackson Pope    schedule 15.02.2011
comment
Это удивительно! Теперь он работает отлично! Большое спасибо! Я выяснил, что из 3 отправленных вами команд только последние 2 работают. Не могли бы вы объяснить? Это бы мне очень помогло. Еще раз спасибо! - person FlyBoy; 15.02.2011
comment
@FlyBoy: Если это решило вашу проблему, пожалуйста, проголосуйте за него (щелкнув стрелку вверх над числом (0) и / или примите его, щелкнув галочку ниже :) Добро пожаловать в StackOverflow! - person Jackson Pope; 15.02.2011
comment
@FlyBoy: Здесь есть полное объяснение этих значений: msdn.microsoft.com/en-us/library/, при использовании DoubleBuffer следует также использовать два других. - person Jackson Pope; 15.02.2011