![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Всем привет.
Делаю такое в делфи:
вобщем я загружаю шаблон фона, размножаю его и эмулирую как бы плавно смещающийся рисунок. Все работает но image1 в котором происходит этот процесс подрагивает - по нему пробегают иногда полосы. Таймер стоит на 10 млск. Подскажите как от этого можно избавиться или как это можно реализовать другими способами. П.С. хочу сделать 2д игру типа ниндзя рюкена почитал разные сайты по библиоткам и компонентам для работы с графикой, но пока что хочу попробовать что то сделать стандартными функциями. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
СЭНСЭЙ, стандартная двойная буферизация решит проблему. Рисовать сначала на невидимом битмапе, затем его выводить на экран одной операцией.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Ок!
Пробую! Добавлено через 9 минут и 53 секунды А какой операцией выводить? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Вот пример
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
переделал
но пробегающие полосы по рисунку не исчезли |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
нашел такой пример в нете
http://delphiworld.narod.ru/base/plane_fly.html попробовал - тоже самое фон у меня 240х252 bmp рисунок 64х64 bmp |
|||
|
||||
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
простой пример двойной буферизации, в принципе понятно где надо рисовать и как выводить.
Присоединённый файл ( Кол-во скачиваний: 10 )
buffere.zip 6,52 Kb |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
А еще момент вспомнил, лучше если отключить сообщение WM_ERASEBKG. В принципе и иногда чистка фона и создает мерцание. Нужно вернуть ненулевой результат.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
я вобщем понял - вставлять рисунок в имейдж - гнилое дело.
Я просто bitblt'ом на канву формы в цикле копировал и все работает прекрасно. Пример с copyrect тоже работает отлично, но я не нашел в 6м делфи компонента PaintBox1. Его можно описать но в меню компонентов его нет. |
|||
|
||||
| AntonN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
СЭНСЭЙ, есть он там, вкладка System
|
|||
|
||||
| СЭНСЭЙ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Ага уже нашел, спасибо!!! )
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Функция Draw вызывает BitBlt, но так что разницы почти никакой. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| yogin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 23.12.2007 Репутация: нет Всего: нет |
Хехе) позвольте сэкономить вам пару десятков строк)
у формы есть параметр .DoubleBuffered, дак вот поставте его в TRUE |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Не уверен что это даст точно такой же эффект. DoubleBuffered проводит кастомную отрисовку компонентов на форме, но далеко не всех, только наследников TWinControl при том что каждому контролу явно присвоено DoubleBuffered. TImage как и прочие неоконные компоненты не реагируют ни как на это событие и будут отрисованы после всего так как если бы DoubleBuffered не был включен совсем. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |