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]}
Мерцание рисунка
Во время перерисовки битмапа (около 50х50) с частотой около 30 кадров в секунду возникает "мерцание рисунка" -- похоже, на короткое время показывается фон формы.
Я думаю, это связано с алгоритмом перерисовки изображения.
Кто знает, в чем может заключаться проблема, и как ее решить, просьба помочь.
Код:
Вариант с недостаточной производительность аппаратуры отпадает
PB- PaintBox ???
Цитата: Pavia
Попробуй использовать DoubleBuffered=True;
Ищу...
Цитата:
PB- PaintBox ???
PB- PaintBox.
рисуешь сначала на видимую канву, а следующий шаг рисуешь в виртуальную канву. при следующем шаге с виртуальной канвы берешь на видимую, а в виртуальную следующий шаг... по моему так... если не ошибаюсь.
если ошибся, не материться - у меня температура %)
Простое добавление свойства не помогает
Код:
TPaintBox * pb; // свойство этого компонента Canvas это твоя видимая канва
TCanvas * vc; // это твоя виртуальная канва
TCanvas * vc; // это твоя виртуальная канва
вот и рисуешь, первый шаг на pb->Canvas, а следующий всегда на vc :) вроде так.