Главная страница
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.052 c
1-1108152524
GreySerg
2005-02-11 23:08
2005.02.27
Как узнать языковую версию Windows 2000, XP, 2003 ?


3-1106817642
Новичёк
2005-01-27 12:20
2005.02.27
Телефоный справочник


1-1108125022
cjbug
2005-02-11 15:30
2005.02.27
ASCI <-> 7-bit


1-1108113834
Jay1982
2005-02-11 12:23
2005.02.27
Save Clipboard


6-1103188361
Zeba
2004-12-16 12:12
2005.02.27
Как из Delphi получить курсы валют с сайта ЦБ РФ?