69107

Анімаційні ефекти

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-09-30

46.5 KB

0 чел.

Лекція 16. Тема: Анімаційні ефекти

1. Анімаційні ефекти

Під час розробки анімаційних програм потрібно створювати ефект пересування графічних об'єктів. Найпростіший спосіб реалізації цього ефекту полягає в тому, щоб намалювати зображення певним кольором, а потім приховати його шляхом повторного малювання в тих самих графічних координатах кольором фону. Наступного разу зображення відтворюється вже в нових координатах. Великі за розміром зображення пересуватимуться у такий способ надто повільно. Значно вищої швидкості, а отже і якості анімації можна досягти за допомогою копіювання зображень в оперативну пам'ять і виведення на екран їх копій у нових графічних координатах. Оскільки копія зображення зберігається в оперативній пам'яті, можливе її багаторазове виведення.

Процедури і функції, що застосовуються для створення анімаційних ефектів, наведені у табл. 5.1. Процедура GetImage (x1, y1, x2, y2: Integer; var BitMap) зберігає в пам'яті зображення, оточене прямокутником, лівим верхнім кутом якого є точка (х1,у1), а правим нижнім - точка (х2, у2). Параметр BitMap - це динамічна змінна, що в ній зберігатиметься зображення. Покажчик на змінну BitMap, як правило, нетипізований. На екран зображення виводиться за допомогою процедури PutImage (x, y: Integer; var BitMap; BitBlt: Word). Координатами лівої верхньої точки зображення є значення параметрів х і у. Параметр BitBlt визначає спосіб взаємодії нової копії зображення із зображенням, що вже є на екрані. Взаємодія здійснюється за допомогою логічних операцій, які застосовуються до кожного біта копії та оригіналу зображення. Значенням параметра BitBlt є одна із таких констант:

const

NormalPut=0;  {заміна наявного зображення на копію}

XorPut=1;  {операція виключного «або»}

OrPut=2;  {об’єднувальне «або»}

AndPut=3;  {логічне «і»}

NotPut=4;  {інверсія зображення}

Логічні операції над зображенням дають такі результати. У випадку використання константи NormalPut зображення на екрані знищується і на цьому місці відображається копія з оперативної пам'яті. В разі вибору константи NotPut буде виведено копію зображення в інверсному коді: так, код white (1510 = 11112) замінюється кодом black (010 = 00002), код red (410 = 01002) — кодом lightCyan (1110 = 10112). Використання константи  XorPut дає можливість видаляти зображення в тих точках екрана, де розміщено його оригінал. Якщо цю операцію застосувати двічі до тих самих координат екрана, то зображення не зміниться.

Приклад 5.5.

Створимо програму, що імітує рух місяця на зоряному небі. Коли зображення місяця сягає межі екрана, напрям його руху змінюється. Один із можливих станів екрана під час роботи програми зображено на рис. 5.4.

Program ex5_4;     {місяць на небі, зіроньки сяють}

uses crt, graph;

var dr, m: integer;     {графічний драйвер та режим}

     x, y,      {координати об’єкта під час руху}

     dx, dy: integer;     {приріст координат}

     ptr: pointer;  {покажчик на область пам’яті, де зберігаються зображення}

size: integer; {розмір необхідної для збереження зображення пам’яті}

     leftX, lefty,     {координати лівого верхнього і}

     rightX, rightY: integer;  {правого нижнього кутів прямокутника, в який вписано зображення}

     i: integer;      {параметр циклу}

{--------------------------------- відображення зоряного неба ---------------------------------}

procedure Sky;

begin

  randomize;     {ініціалізація генератора випадкових чисел}

  SetBkColor (1);     {визначення кольору фону}

  SetColor (14);     {колір зірок}

  for i:=0 to 200 do     {відображення зірок}

    Circle (random(640), random(480), 1);

end;

{--------------------------------- відображення місяця на небі ---------------------------------}

procedure Moon;

begin

  SetColor (14);

  Arc (450, 100, 270, 90, 50);

  Arc (390, 100, 320, 40, 80);

  SetFillStyle (1, 14);

  FloodFill (480, 100, 14);

end;

{----------------------- збереження зображення у динамічній пам’яті ----------------------}

procedure SaveClip;

begin

  leftX:=445;       {координати прямокутника}

  leftY:=45;       {у який вписано місяць}

  rightX:=505;

  rightY:=155;

  size:=imagesize (leftX, lefty, rightX, rightY);

  getmem (ptr, size);      {виділити пам’ять}

  getimage (leftX, lefty, rightX, rightY, ptr^);  {зберегти зображення в пам’яті }

  putimage (leftX, lefty, ptr^, xorput);   {приховати зображення}

end;

{--------------------------------- рух місяця ---------------------------------}

procedure Move;

begin

  x:=leftX; y:=lefty;      {стартові координати}

  dx:=10; dy:=10;      {приріст координат}

  repeat       {зсув зображення}

     x:=x+dx;       {зміна координат місяця}

     y:=y+dy;

     putimage (X, Y, ptr^, xorput);   {зобразити фігуру в нових координатах}

     delay (2000);      {затримати рух}

     putimage (X, Y, ptr^, xorput);   {сховати фігуру в старих координатах}

     if (x>640) or (x<0)    {якщо фігура сягнула межі екрана,}

        then dx:=-dx     {змінити напрям її руху}

        else

           if (y<0) or (y>480) then dy:=-dy;

  until keypressed;

end;

{--------------------------------- основна програма ---------------------------------}

begin

  dr:=Detect;

  InitGraph (dr, m, ‘ ’);

  Sky;

  Moon;

  SaveClip;

  Move;

end.

Контрольні питання

1.Анімаційні ефекти


 

А также другие работы, которые могут Вас заинтересовать

72078. Оцінка фінансової стійкості підприємства і заходи по її підвищенню (з досвіду ЗАТ ’’Центральна районна аптека № 81’’) 930.5 KB
  Мета дослідження. Полягає в аналізі системи показників, що характеризують внутрішній фінансовий стан підприємства, необхідних для розробки програми, прийняття ділових виробничо - господарських і управлінських рішень по підвищенню фінансової стійкості та розробка пропозицій, щодо покращення фінансового стану підприємства.
72079. Проблема формирования межкультурной компетенции посредством тренинга 282.91 KB
  Актуальность исследования тенденций в существующих на сегодняшний день стратегиях управления монокультурными и поликультурными конфликтами продиктована рядом обстоятельств: Межличностные конфликты в поликультурной среде являются предметом многочисленных исследований что вызвано активными...
72080. Психологические аспекты управления процессом мотивации в системе государственной службы 156.91 KB
  Путь к эффективному управлению человеком лежит через понимание его мотивации. Только зная то, что движет человеком, что побуждает его к деятельности, какие мотивы лежат в основе его действий, можно попытаться разработать эффективную систему форм и методов управления персоналом.
72084. Администрирование локальной сети офиса 1.03 MB
  Анализ виртуальных локальных сетей VLN Всем коммутируемым сетям присуще одно ограничение. Для того чтобы этого не происходило важно ограничить область распространения широковещательного трафика эта область называется широковещательным доменом организовать небольшие широковещательные домены...
72086. Поняття «художній активізм», як особливий тип межових художніх практик ХХ-ХХІ сторіччя 113.36 KB
  Одними з таких змін стає ціла низка нових мистецьких жанрів у разі якщо ми апелюємо до мистецтва як до практики або ж нова домінуюча цивілізаційнокультурна парадигма сучасності якщо будемо розглядати мистецтво в широкому розумінні.