Вниз
Скачать: CL | DM;

как избавиться от мерцания?   Найти похожие ветки [GDI]

 
Creative   (2006-04-28 14:10) [0]

WM_PAINT:
      begin
       DC:=BeginPaint(hwnd, PS);
       SetRect(R, 0,0, 200, 200);
       FillRect(DC, R, COLOR_WINDOW);
       case Color of
       0:
       begin
       Bmp:= TBitmap.Create;
       Bmp.Handle:= LoadBitmapFromFile("F_01.bmp");
       DrawTransparentBmp(DC, 0, 0, Bmp, $FFFFFF);
       end;
       1:
       begin
       Bmp:= TBitmap.Create;
       Bmp.Handle:= LoadBitmapFromFile("F_02.bmp");
       DrawTransparentBmp(DC, 0, 0, Bmp, $FFFFFF);
       .......
       end;

Получается простенький мультик из произвольного количества кадров. Так как битмапы выводятся с прозрачным фонов, то перед прорисовкой каждого кдра на месте выводя рисуется прямоугольник цвета фона окна. Но при запуске все это дело ужасно мерцает. Как от этогоизбавиться? (NB: если выводить битмапы с фоном - все смотрится очень гладко и без мерцания).

PS: Если можно, не отвечайте в духе "бросай рисовать на GDI, переходи на OpenGL".


 
MBo ©   (2006-04-28 15:04) [1]

Не нужно делать долгие операции в WM_PAINT - хотя это и накладно, возможно, стоит загружать битмапы один раз.
Кроме того, что делается в WM_ERASEBKGND?


 
Creative   (2006-04-28 15:16) [2]

> MBo ©   (28.04.06 15:04) [1]
> Кроме того, что делается в WM_ERASEBKGND?

не могли бы вы пояснить это свое замечание?


 
KygECHuK ©   (2006-04-28 15:28) [3]

Попробуй сделать ещё один Bitmap под буффер и в него сначала рисовать задний фон анимации, а затем новое изображение. И за один раз вывести содержимое буффера.


 
Eraser ©   (2006-04-29 01:53) [4]


> Creative   (28.04.06 15:16) [2]
>
> > MBo ©   (28.04.06 15:04) [1]
> > Кроме того, что делается в WM_ERASEBKGND?
>
> не могли бы вы пояснить это свое замечание?

скорее всего грабли именно в этом. Надо просто перекрыть это сообение и ничего не выполнять при его вызове.
Как инициируется прорисовка кадра?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
6-1143652902
chizra
2006-03-29 21:21
2006.08.20
Почтовый клиент через почтовый прокси...


15-1153583478
Nic
2006-07-22 19:51
2006.08.20
Мой первый проект под заказ


2-1154373672
ivane
2006-07-31 23:21
2006.08.20
Качество цветопередачи


11-1131365399
DmiSb
2005-11-07 15:09
2006.08.20
Еще раз про немодальную форму из DLL


15-1153814754
Pazitron_Brain
2006-07-25 12:05
2006.08.20
Можно соединить КПК с




   Наверх