Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мерцание рисунка

602
08 июля 2007 года
KPI Student
265 / / 16.12.2006
При разработке игры столкнулся с пробемой перерисовки изображения.
Во время перерисовки битмапа (около 50х50) с частотой около 30 кадров в секунду возникает "мерцание рисунка" -- похоже, на короткое время показывается фон формы.
Я думаю, это связано с алгоритмом перерисовки изображения.
Кто знает, в чем может заключаться проблема, и как ее решить, просьба помочь.
Код:
void __fastcall TForm2::MoveTank(long x, long y)
{[INDENT]PB->Canvas->CopyMode=cmSrcCopy;
PB->Canvas->CopyRect(    // "латаем" фон травой[INDENT]Rect(player->X(),player->Y(),player->X()+50,player->Y()+50),
objarr[0]->Bitmap()->Canvas,
Rect(player->X(),player->Y(),player->X()+50,player->Y()+50));  [/INDENT]objarr[1]->MoveTo(x,y);
PB->Canvas->Draw(player->X(),player->Y(),*player);
[/INDENT]}
void __fastcall TForm2::Timer30Timer(TObject *Sender)
{[INDENT]player->ProcessTimeEvents();
MoveTank(player->X(),player->Y());
[/INDENT]}

Вариант с недостаточной производительность аппаратуры отпадает
551
08 июля 2007 года
Pavia
357 / / 22.04.2004
Попробуй использовать DoubleBuffered=True;
PB- PaintBox ???
602
08 июля 2007 года
KPI Student
265 / / 16.12.2006
Цитата: Pavia
Попробуй использовать DoubleBuffered=True;


Ищу...

Цитата:

PB- PaintBox ???


PB- PaintBox.

92
09 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
да, двойная буфферизация самое то решение проблемы.

рисуешь сначала на видимую канву, а следующий шаг рисуешь в виртуальную канву. при следующем шаге с виртуальной канвы берешь на видимую, а в виртуальную следующий шаг... по моему так... если не ошибаюсь.

если ошибся, не материться - у меня температура %)
602
11 июля 2007 года
KPI Student
265 / / 16.12.2006
Обьясните пожалуйста, как с ней работать и переключать канву.
Простое добавление свойства не помогает
92
11 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
 
Код:
TPaintBox * pb; // свойство этого компонента Canvas это твоя видимая канва
TCanvas * vc; // это твоя виртуальная канва


вот и рисуешь, первый шаг на pb->Canvas, а следующий всегда на vc :) вроде так.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог