|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.12.2010, 02:21 | #1 |
Регистрация: 21.12.2010
Сообщений: 4
|
Анимация_в_WindowsForms
У меня была задача написать игру бильярд в WindowsForms, я зарисовал зеленый стол и шары, когда нужна была анимация весь стол перерисовывался в цыкле, но при этом появлялись ужасные мерцания.. Можна как-то избавиться от мерцания или может нужно как-то по другому сделать игру? Я думал может можна как-то сделать шары в динамическом виде чтобы они могли нормально перемещаться и не надо было перерисовывать стол..
И еще часто бывает при такой анимации программа зависает и появляется просто белый экран пока не закончится цыкл. Как это исправить? |
21.12.2010, 02:28 | #2 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
Насчет белого экрана - незнаю это у тебя уже косяки в коде какие-то
А вобще для устранения мерцания есть техника - двойная буферизация. Смысл ее в том что ты вырисовываешь кадр изображения не на экран а в участок памяти (backbuffer). После того как кадр отрисован, ты копируешь память из бэкбуффера в экран(ну в то место вобщем куда ты щас все это дело рисуешь). если ты рисуешь в какой-нибудь Bitmap-подобный объект то бэкбуффером тебе будет служить объект Bitmap с такими же настройками (ширина, высота, формат пикселя) как у экранного. В него и рисуешь.. потом копируешь данные из этого битмапа в экран, и все) кадры я имею в виду не кадры твоей анимации а кадры в смысле те которые на экране видишь уже готовые ЗЫ: бильярд я тоже пытался сделать в шараге - не вышло, однако то глючное нечто что вышло я как-то сдал |
21.12.2010, 02:37 | #3 |
Регистрация: 21.12.2010
Сообщений: 4
|
Спасибо за ответ.
С белым экраном у меня так не всегда, иногда анимация какое-то время идет, а потом вдруг как буд-то все по висло, как цикл закончился снова все впорядке... |