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.Анімаційні ефекти


 

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

11015. Этика науки и техники 51 KB
  Этика науки и техники. Этика науки и техники как этика ответственности. Внутренняя и внешняя этика науки и техники. Проблема этической размерности научной деятельности и технического творчества обозначилась в ХХ в.: достаточно долго этические проблемы на...
11016. Классификация сетей 31 KB
  Классификация сетей Любая сеть представляет собой сочетание узлов сети и линий связи. По назначению Телефонные не сотовые сети передачи голоса. Единственное требование разборчивость речи. Вещательные теле и радио. Данные передаются только в од
11017. Сеть Ethernet на основе витой пары (10|100|1000Base-TX) 213 KB
  Сеть Ethernet на основе витой пары 10|100|1000BaseTX Витая пара twisted pair 2 или 4 пары скрученных проводников. 4х проводная витая пара способна работать на скоростях до 100Мбит/с а кабель состоящий из 8 проводников на рисунке на скоростях до 1000Мбит/с Всё оборудование для в
11018. Семейство технологий Ethernet 50 KB
  Семейство технологий Ethernet Стандарт Ethernet был опубликован в начале 1973г. Первые варианты были рассчитаны на скорость 10мбитс. Сегодня используются разновидности со скоростями 100мбитс и 1Гбитс. В теории существует стандарт на 10Гбитс оборудование для которого дорого и м
11019. Цели, преследуемые при создании сетей 21 KB
  Цели преследуемые при создании сетей. При создании сетей в общем преследуется одна цель передача данных но в каждом конкретном случае преследуется какаялибо практическая цель. Совместное использование оборудования чаще всего принтеров и накопителей.
11020. Сети на основе оптоволоконных кабелей 86 KB
  Сети на основе оптоволоконных кабелей Стандарт: 10/100/1000 Base FX FX − Fiber Optic − оптоволокно В отличие от витой пары по оптоволокну передаются не электрические а оптические импульсы. Поэтому подключить оптоволокно к электронным устройствам нельзя необходимо преобразов...
11021. Основные подсистемы, работающие в сетях 28 KB
  Основные подсистемы работающие в сетях. В любой сети есть несколько подсистем жизненно необходимых для работы сети. Система адресации. Чтобы узлы сети могли общаться друг с другом каждому узлу необходим уникальный адрес адрес может бы уникален тольк...
11022. Беспроводные технологии 353.5 KB
  Беспроводные технологии Для передачи данных по воздуху используются радиосигналы. У любого сигнала есть 2 характеристики: Излучаемая мощность Частота От излучаемой мощности зависит дальность связи. Любые радиоизлучения вредны для здоровья и окружаю...
11023. Основные термины и понятия Сетей и Телекоммуникаций 40 KB
  Основные термины и понятия Сетей и Телекоммуникаций. Пакет данных frame. В большинстве сетей используется принцип разделяемой среды передачи передавать в каждый момент времени может только один узел. Таким образом если передавать файл монолитным блоко...