Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

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

 
melena ©   (2005-08-22 16:06) [0]

Подскажите пожалуйста, Как избавиться от мерцания при анимировании?


 
grouzd[E]v ©   (2005-08-22 16:38) [1]

form1.doublebuffered := true;

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-22 17:48) [2]

а можно поподробнее, а то я в этом не очень разбираюсь


 
programania ©   (2005-08-22 22:45) [3]

Нужно все рисовать в bitmap фон, персонаж,
а не на экране и выводить уже готовое
вот пример где ходит персонаж из poser и не мерцает
http://programania.com/girl.zip  171 kb


 
grouzd[E]v ©   (2005-08-22 23:13) [4]

[2] melena ©   (22.08.05 17:48)
А куда уж подробнее? У вормы есть свойство doublebuffered - присваивем ему true и ага
ЗЫ Вах! Землячка! НН рулит!

[3] programania ©   (22.08.05 22:45)
А может ей надо TImage"ы двигать?

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-23 12:52) [5]

да добавила я form1.doublebuffered := true в proc TForm1.FormCreate все-равно мерцает


 
grouzd[E]v ©   (2005-08-23 15:05) [6]

Так ты как делаешь? Рисуешь на канве или двигаешь button"ы c image"ами?
Кстати, если двигаешь на панели (она же TPanel), то doublebuffered нужно ставить не для формы, а для этой панели
Лучше, напиши код

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-23 18:08) [7]

вобщем все это выглядит вот так
timer1.Interval:=20;
....

procedure TForm2.Timer1Timer(Sender: TObject);
begin

bm.Canvas.Brush.Color:=clbackground;
bm.Canvas.fillRect(rect(0,0,Form2.ClientWidth,Form2.ClientHeight));
t:=t+timer1.Interval;
//Edit2.Text:=inttostr(t);
if t<c then begin
 r:=r0;
 bm.Canvas.Brush.Color:=clyellow;
 bm.Canvas.Pen.Color:=clyellow;
 bm.Canvas.Ellipse(150-r,150-r,150+r,150+r);
 end;
if (t>c) and (t<p) then begin
 r:=r0+round(a*abs(sin(pi*v*(t-c)/1000)));
 bm.Canvas.Brush.Color:=clyellow;
 bm.Canvas.Pen.Color:=clyellow;
 bm.Canvas.Ellipse(150-r,150-r,150+r,150+r);
 end;
if (t=p) or (t>p) then begin t:=t-p;
 bm.Canvas.Brush.Color:=clyellow;
 bm.Canvas.Pen.Color:=clyellow;
 bm.Canvas.Ellipse(150-r0,150-r0,150+r0,150+r0);
 end;
//Edit1.Text:=inttostr(r);
//Edit3.Text:=inttostr(round(a*abs(sin(pi*v*t/1000))));
Form2.Canvas.Draw(0, 0, bm);
end;


 
grouzd[E]v ©   (2005-08-23 19:33) [8]

А ты refresh / repaint для формы делаешь?
Если делать, то моргать будет даже с двойным буфером
Выход: рисовать на канве TImage

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-23 21:20) [9]

да нет я ничего такого не делаю,но раньше я рисовала сразу на канве, вот тогда мерцало сильнее, а сейчас с таким кодом намного меньше,может моргает из-за того что интервал у таймера очень маленький?


 
grouzd[E]v ©   (2005-08-23 22:28) [10]

Да нет, я пробовал. Если форму не перерисовывать мерцания нет даже без вклуючения doublebuffered. А на форме есть еще какие-нибудь компоненты?
ЗЫ имхо лучше все же рисовать на канве TImage"а

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-23 23:08) [11]

есть меню ,пара edit"ов и пара label"ов


 
grouzd[E]v ©   (2005-08-24 00:59) [12]

А они лежат ПОВЕРХ той области, на которой рисуешь?
И вообще, что моргает - форма или компоненты?

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-24 08:37) [13]

вобщем пульсирует шарик с определенной частотой, когда частота пульсации маленькая, те от 1 до где-то 5 гц все нормально ничего не мерцает, а вот при большей частоте при прорисовке шарика с новым радиусом уже видно мерцание, те пробегает полоса.


 
grouzd[E]v ©   (2005-08-24 12:23) [14]

Может частота шарика > частоты монитора?

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-24 12:42) [15]

да нет, макс частота 25 гц, у монитора 85


 
grouzd[E]v ©   (2005-08-24 16:30) [16]

Тогда нужно смотреть на программу. И лучше с сырцами

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-24 17:33) [17]

с чем извини?
интересная штука:запускаю exe"шный файл на компе, где не установлен delphi, все нормально-ничего не мерцает, фигня какая-то:-Р


 
grouzd[E]v ©   (2005-08-24 17:52) [18]

Диагноз =) Стучись в аську 243059969
ЗЫ Сырцы - исходники

---
... we are walking on a thin line and you better avoid the risk ...


 
melena ©   (2005-08-24 21:23) [19]

я тебе на мыло сбросила, получил?


 
OldNaum ©   (2005-08-24 21:39) [20]

{offtopic}
Как активно Мастера всегда бросаются помогать дэвушкам ) Любят давать мыла / аси ) LOL. sorry за оффтоп )
{/offtopic}


 
grouzd[E]v ©   (2005-08-24 22:28) [21]

> я тебе на мыло сбросила, получил?
да
> [20] OldNaum ©   (24.08.05 21:39)
Скажи это Новоуральску =)
ЗЫ Хотя... к тому ж землячка...

---
... we are walking on a thin line and you better avoid the risk ...


 
OldNaum ©   (2005-08-24 22:43) [22]

{offtopic}
а че за Новоуральск? все про него говорят рано или поздно в некоторых топиках. а я мимо ) расскажите на досуге ) даешь ветку "Новоуральск" в "Потрепаться" ) sorry за оффтоп )
{/offtopic}


 
grouzd[E]v ©   (2005-08-24 23:13) [23]

Мифическое такое существо. Ходит по форумам и задает т-у-п-ы-е вопросы.
Читай архив "Игр".

---
... we are walking on a thin line and you better avoid the risk ...



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

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

Наверх




Память: 0.52 MB
Время: 0.027 c
5-1124170286
Michael5
2005-08-16 09:31
2006.02.05
Мне нужно поместить на панель (TPanel) таблицу (DBGrid), но чтобы


2-1137679539
Compton's G
2006-01-19 17:05
2006.02.05
TStringlist


2-1137699799
Rust007
2006-01-19 22:43
2006.02.05
Программа в трее


2-1137706453
Vlad1
2006-01-20 00:34
2006.02.05
как в мое прог _часы сделать изменение сис времени


1-1136712811
BiggieSmalls
2006-01-08 12:33
2006.02.05
Генератор случайных букв :)