Як робити анімацію (2D)

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

Ось моя спроба- http://delphigames.ruhelp.com/index.php?act=Attach&type=post&id=37

Задавай конкретні питання щодо посилання маячня якась

Виправляюся: Припустимо, є малюнок, що містить кілька кадрів, показавши які один за одним отримується анімація, на кшталт тієї, що у мене на прикладі. Питання: як відображати необхідний кадр у компоненті TImage? Або: як відображати необхідну частина малюнку?

BitBlt() вміє копіювати частинами

що таке BitBlt і як ним користуватися?

За твоїм посиланням вантажиться якийсь спам із пропозицією зареєструвати безкоштовний форум :) Ну, чорт із ним із прикладом.

Ось ІМХО найпростіший спосіб (з чогось такого я починав): 1) розрізаєш малюнок по кадрах - кожен кадр в окремий файл. Називаєш їх, наприклад, k1.bmp, k2.bmp, . ,k10.bmp 2) робиш масив my_pic:array[1..10]of tbitmap; і змінну-тег. pic_tag:byte; 3) завантажуєш туди малюнки для 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 тощо. лажа :) коли прокачаєшся розберешся.

ну і ще напевно купа помилок є :) сподіваюся ідея ясна.

page.Canvas.CopyRect(Rect(0, 0, 32, 16), bmp.Canvas, Rect(Frame * 32, 0, Frame * 32 + 32, 16); Це для кадрів 32х16 розташованих горизонтально Frame - поточний кадр анімації.

Дякую всім, пробуватиму.

BitBlt - той жеCopyRect(), тільки швидше буде працювати. Хоч і не набагато

О. Колега! Я теж дещо спробував. http://dcegame.narod.ru/pilots.html І можу сказати, що гальмується працює, якщо через Canvas виводити.

Може хто знає, як через 3d прискорювач робити те саме? У сенсі робити так, щоб не треба було все координально переробляти. Якісь аналогічні функції типу CopyRect, тільки в 3D існують ?

ні, але ці функції можна написати самому

І навіть в OpenGL немає? Чи ти просто не в курсі?

До речі, я додав Колегу в http://dcegame.narod.ru/pilots.html І підказки при наведенні на предмети.

Тепер думаю, де б сценарій цікавий надибати.

типу. КухарДров тобі допоможе

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;

> Якісь аналогічні функції типу CopyRect, тільки в > 3D існують ?якби і були, то гальмували вони так само як і при виведенні на канву. Там є інші методи. Але насправді все дуже легко.