Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как делать анимацию (2D)? [Delphi, Windows]


-virus- ©   (2005-07-19 17:14:00) 

Мастера, подскажите как делать анимацию в Delphi (2D).
Я кое что попробовал, но результатом не доволен.
Может что-то подскажите.

Вот моя попытка-
http://delphigames.ruhelp.com/index.php?act=Attach&type=post&id=37


MeF Dei Corvi   (2005-07-24 01:17:00) [1]


> Какие нибудь аналогичные функции типа CopyRect, только в
> 3D существуют ?

если бы и были, то тормозили они так же как и при выводе на канву. Там другие методы. Но, на самом деле, всё очень легко.


XProger   (2005-07-22 10:37:00) [2]


ds := 1/Frames;
s  := Frame * ds;
glBegin(GL_QUADS);
glTexCoord2f(s, 0);      glVertex3f(X, Y);
glTexCoord2f(s + ds, 0); glVertex3f(X + 32, Y);
glTexCoord2f(s + ds, 1); glVertex3f(X + 32, Y + 16);
glTexCoord2f(s, 1);      glVertex3f(X, Y + 16);
glEnd;


TButton   (2005-07-22 08:51:00) [3]

типа... ПоварДров тебе поможет


Шеф   (2005-07-22 01:28:00) [4]


> A22 ©   (21.07.05 09:52) [11]
> нет, но эти функции можно написать самому


И даже в OpenGL нету ? Или ты просто не в курсе ?

Кстати, я добавил Коллегу в http://dcegame.narod.ru/pilots.html
И всплывающие подсказки при наведении на предметы.

Теперь думаю, где бы сценарий интересный надыбать.


A22   (2005-07-21 09:52:00) [5]

нет, но эти функции можно написать самому


Шеф   (2005-07-21 01:37:00) [6]


> -virus- ©   (19.07.05 17:14)  
> Мастера, подскажите как делать анимацию в Delphi (2D).
> Я кое что попробовал, но результатом не доволен.


О. Коллега ! Я тоже кое что попробовал. http://dcegame.narod.ru/pilots.htmlИ могу сказать, что тормознуто работает, если через Canvas выводить.

Может кто знает, как через 3d ускоритель делать тоже самое ? В смысле делать так, чтобы ненадо было всё координально переделывать. Какие нибудь аналогичные функции типа CopyRect, только в 3D существуют ?


A22   (2005-07-20 19:34:00) [7]

BitBlt - тот же CopyRect(), только быстрее работать будет. Хоть и не намного


-virus-   (2005-07-20 17:32:00) [8]

Спасибо всем, буду пробовать.


XProger   (2005-07-20 15:40:00) [9]


page.Canvas.CopyRect(Rect(0, 0, 32, 16), bmp.Canvas, Rect(Frame * 32, 0, Frame * 32 + 32, 16);

Это для кадров 32х16 расположенных горизонтально в ряд. Frame - текущий кадр анимации...


Kobik   (2005-07-20 15:22:00) [10]

очипятка
>my_pic[i].loadfromfile('k'+inttostr(i));
надо
my_pic[i].loadfromfile('k'+inttostr(i)+'.bmp');

ну и еще наверно куча ошибок есть :) надеюсь идея ясна.


Kobik   (2005-07-20 15:20:00) [11]

По твоей ссылке грузится какой то спам с предложением зарегистрировать бесплатный форум :) Ну, черт с ним с примером.

Вот ИМХО самый простой способ (с чего-то такого я начинал):
1) разрезаешь рисунок по кадрам - каждый кадр в отдельный файл. Называешь их, например k1.bmp, k2.bmp,  ...  ,k10.bmp
2) делаешь массив

my_pic:array[1..10]of tbitmap;

и переменную-тег.

pic_tag:byte;

3) загружаешь туда рисунки

for i:=1 to 10 do
begin
my_pic[i]:=tbitmap.create;
my_pic[i].loadfromfile('k'+inttostr(i));
end;

4) в таймере, или где там у тебя происходит смена кадров

...
inc(pic_tag);
if pic_tag>10 then pic_tag:=1;
image1.canvas.draw(0,0,my_pic[pic_tag]);
...


А всякие BitBlt и т.п. лажа :) когда прокачаешься разберешься...


-virus-   (2005-07-20 12:22:00) [12]

что такое BitBlt и как им пользоватьса?


A22   (2005-07-20 09:26:00) [13]

BitBlt() умеет копировать частями


-virus-   (2005-07-20 09:04:00) [14]

Исправляюсь:
Допустим, есть рисунок содержащий несколько кадров, показав которые один за одним получаетса анимация, вроде той что у меня на примере.
Вопрос: как отображать необходимый кадр в компоненте TImage?
Или: как отображать необходимую часть рисунка?


XProger   (2005-07-19 17:35:00) [15]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1119771942&n=9

Задавай конкретные вопросы по ссылке бред какой-то


Наверх

Титульная страница Поиск, карта сайта Написать письмо