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

Мерцание картинки   Найти похожие ветки 

← →
niki   (2005-01-15 01:40) [0]

Наверное многие сталкивались с проблемой мерцания картинки, например если у меня кортинка должна двигаться в 1/100 секунды то без мерцаний не обойтись. Я так понимаю по идее создается виртуальное изображение формы в памяти. Вот я надыбал две проце_дурки:

procedure BeginScreenUpdate(hwnd : THandle);
begin
if (hwnd = 0) then
hwnd := Application.MainForm.Handle;
SendMessage(hwnd, WM_SETREDRAW, 0, 0);
end;

procedure EndScreenUpdate(hwnd : THandle; erase : Boolean);
begin
if (hwnd = 0) then
hwnd := Application.MainForm.Handle;
SendMessage(hwnd, WM_SETREDRAW, 1, 0);
RedrawWindow(hwnd, nil, 0, DW_FRAME + RDW_INVALIDATE +
RDW_ALLCHILDREN + RDW_NOINTERNALPAINT );
if (erase) then
Windows.InvalidateRect(hwnd, nil, True);
end;
толи я не выхватую темы толи процеДУРЫ плохие. В общем кому интересно и кто может помогите.


← →
programania ©   (2005-01-15 02:24) [1]

>например если у меня кортинка должна двигаться в 1/100 секунды то без мерцаний не обойтись.
Найдите в форуме Media пример Test_BitBlt
в нем весь экран 1024*768 движется со скоростью 340 fps
и у меня на P800 MX400 мерцаний незаметно.


← →
niki   (2005-01-15 14:27) [2]

Овет на programmania. Паставь на форму картинку(я пробовал 48x48). Поставь таймер с интервалом 100. В таймере пропиши движение картинки(пр. Image1.Left := Image1.Left + 1). Компилиш и когда картинка движется то она мерцает. При интервале 100 мало заметно, тогда поставь интервал 10 или даже 1, и я уверен что картинка будет мерцать.


← →
dimaxx ©   (2005-01-15 15:29) [3]

Как альтернатива - использование directdraw surface. Тогда никаких мерцаний не бует.


← →
programania ©   (2005-01-15 22:07) [4]

>niki   (15.01.05 14:27) [2]
>В таймере пропиши движение картинки(пр. Image1.Left := Image1.Left + 1).

Это не движение картинки, это движение компонента Image1
Чтобы двигалась картинка и не мерцала нужно:
1.Запомнить фон в f:tBitmap.
2.Вывести фон в рабочий r:tBitmap;
3.Вывести картинку в r
4.Вывести r на экран
5.Изменить координаты вывода картинки
6.перейти на 2
все это при помощи canvas.draw(


← →
niki   (2005-01-15 22:14) [5]

Ладно. Благодарствую за помощь. Я уже разобрался как эту ерунду делать. И прости programania что я неправильно написал твой ник выше.


← →
Kerk ©   (2005-01-15 22:20) [6]

niki   (15.01.05 14:27) [2]
первое правило анимации - не двигай TImage



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

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



Память: 0.46 MB
Время: 0.023 c
1-1108126253
snake_r
2005-02-11 15:50
2005.02.27
выделение в StringGrid


14-1107943456
АлексС
2005-02-09 13:04
2005.02.27
Контрольная сумма


6-1103499595
Beglec
2004-12-20 02:39
2005.02.27
Проблема с WinPcap.


6-1098027454
Grigoryan
2004-10-17 19:37
2005.02.27
Свой smtp-сервер


11-1092521358
SSSSS
2004-08-15 02:09
2005.02.27
DLL в KOLe??? Очень надо!




   Наверх