Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

как избавиться от мерцания?   Найти похожие ветки [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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.053 c
15-1153845017
oldman
2006-07-25 20:30
2006.08.20
Как съезжают программисты...


3-1150126443
Варяг
2006-06-12 19:34
2006.08.20
MySQL + Delphi


9-1132870304
Новичек:)
2005-11-25 01:11
2006.08.20
Насчет создания игр


2-1154460630
Ezorcist
2006-08-01 23:30
2006.08.20
Компонет и переменная


6-1144156448
MegaVolt
2006-04-04 17:14
2006.08.20
NetBios и многопоточность несовместимы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский