Бумер Опубликовано 16 марта, 2007 Жалоба Поделиться Опубликовано 16 марта, 2007 Программирую движение круга, квадрата и т.п. Дело состоит вот в чем: 1. рисование объекта красным (к примеру цветом) 2. стирание (рисование черным) 3. Задержка 4. Изменение координат и снова 1-4 Дело в том, что рисунок почему то мигает! Как устранить этот неблагоприятный эффект? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 марта, 2007 Жалоба Поделиться Опубликовано 16 марта, 2007 Бумер: А как ему не мигать, если ты его стираешь, делаешь задержку, а потом снова рисуешь? Задержку надо делать после рисования, а не после стирания. Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 марта, 2007 Жалоба Поделиться Опубликовано 16 марта, 2007 Вообщем люди придумали duble buffering ( и triple тоже ) из за этого Идея состоится в том, что ты рисуеш гдето на другом месте, а потом картинку показиваеш на екран. Потому что скопировать память ( т.е. весь рисунок ) всегда бистрее чем рисовать эго на екране Ссылка на комментарий Поделиться на другие сайты Поделиться
Бумер Опубликовано 16 марта, 2007 Автор Жалоба Поделиться Опубликовано 16 марта, 2007 Cпасибо, и правда что то я стормозил.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Бумер Опубликовано 23 марта, 2007 Автор Жалоба Поделиться Опубликовано 23 марта, 2007 Ну ладно ,если это простой объект, то ничего. А попробуйте например нарисовать ромашку в паскале, за базовую точку возьмем центр цветка, остальное привяжем к координатам этой точки. Далее в цикле рисуем, делаем задержку, стираем, рисуем в новом месте и т.д. Происходит мигание причем очень заметное. Видно даже то, что первое рисуется, а что потом. Ну например в программе рисуем лепестки сначала, а потом закрашиваем середину желтым. Причем желтое накладывается на белое - и все это будет видно при мигании!!! Уменьшить мигание получается только увеличением задержки и увеличением приращения координат! Похоже, что это всего лишь комп думает долговато, хотя я юзаю везде integer, а это целый тип, поэтому вычисления выполняются быстрее чем с вещественными числами - ускорять уже некуда!!! кто нибудь знает как победить этот эффект? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 23 марта, 2007 Жалоба Поделиться Опубликовано 23 марта, 2007 (изменено) Double Buffering Создаёшь bitmap, рисуешь в нём, а потом показываешь его на экране. Рисуешь в другом bitmap-е — и опять. На Pascal я этого не делал, использовал OpenGL только, а там это почти автоматически :) Изменено 23 марта, 2007 пользователем Rulchik Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти