Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: 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 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.104 c
4-1105612676
Ilya___
2005-01-13 13:37
2005.02.27
Подскажите, где можно взять алгоритм печати TBitmap на принтер,


14-1107793461
sten
2005-02-07 19:24
2005.02.27
методы адрессации машинных команд


1-1107337808
Drakosha
2005-02-02 12:50
2005.02.27
Ошибка при активизации последней ячейки


9-1098877316
Soroka
2004-10-27 15:41
2005.02.27
Генерация лабиринтов


1-1108141017
Алексей
2005-02-11 19:56
2005.02.27
Експорт в Ексель