Главная » Просмотр файлов » Задание6_Мультипликация

Задание6_Мультипликация (1076723)

Файл №1076723 Задание6_Мультипликация (Лабораторная работа №6)Задание6_Мультипликация (1076723)2018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Задание 6

Вывод иллюстраций и мультипликация

Задание 6.1. Создайте программу, которая демонстрирует движение окружности из левого нижнего в правый верхний угол окна программы.

Задание 6.2. Летящий самолет.

Вывод иллюстраций

Наиболее просто вывести иллюстрацию, которая находится в файле с рас­ширением bmp, jpg или ico, можно при помощи компонента image, значок которого находится на вкладке Additional палитры (рис. 1).

Рис. 1. Значок компонента Image

В табл. 1 перечислены основные свойства компонента image.

Таблица 1. Свойства компонента Image
Свойство Определяет

P icture Иллюстрацию, которая отображается в поле компонента

Width, Height Размер компонента. Если размер компонента меньше размера иллюстрации, и значение свойств AutoSize и Strech равно False, то отображается часть иллюстрации

AutoSize Признак автоматического изменения размера компонента в

соответствии с реальным размером иллюстрации

Strech Признак автоматического масштабирования иллюстрации в со ответствии с реальным размером компонента. Чтобы было вы­полнено масштабирование, значение свойства AutoSize долж[но быть False

Visible Отображается ли компонент, и, соответственно, иллюстрация, на поверхности формы

И ллюстрацию, которая будет выведена в поле компонента image, можно задать как во время разработки формы приложения, так и во время работы программы.

Во время разработки формы иллюстрация задается установкой значения свойства picture путем выбора файла иллюстрации в стандартном диалого­вом окне, которое появляется в результате щелчка на командной кнопке Load окна Picture Editor (рис. 10.12). Чтобы запустить Image Editor, нужно в окне Object Inspector выбрать свойство Picture и щелкнуть на кнопке с тре­мя точками.

Если размер иллюстрации больше размера компонента, то свойству Strech нужно присвоить значение True и установить значения свойств Width и Height пропорционально реальным размерам иллюстрации.

Чтобы вывести иллюстрацию в поле компонента Image во время работы программы, нужно применить метод LoadFromFile к свойству Picture, ука­зав в качестве параметра имя файла иллюстрации. Например, инструкция

form1.Image1.Picture.LoadFromFile('e:\temp\bart.bmp')

загружает иллюстрацию из файла bart.bmp и выводит ее в поле вывода иллюстрации (Image1).

Метод LoadFromFile позволяет отображать иллюстрации различных графи­ческих форматов: BMP, WMF, JPEG (файлы с расширением jpg).

Битовые образы

При работе с графикой удобно использовать объекты типа TBitMap (битовый образ). Битовый образ представляет собой находящуюся в памяти ком­пьютера, и, следовательно, невидимую графическую поверхность, на кото­рой программа может сформировать изображение. Содержимое битового образа (картинка) легко и, что особенно важно, быстро может быть выведе­но на поверхность формы или области вывода иллюстрации (Image). По­этому в программах битовые образы обычно используются для хранения небольших изображений, например, картинок командных кнопок.

Загрузить в битовый образ нужную картинку можно при помощи метода LoadFromFile, указав в качестве параметра имя BMP-файла, в котором на­ходится нужная иллюстрация.

Например, если в программе объявлена переменная pic типа TBitMap, то после выполнения инструкции

pic.LoadFromFile('e:\images\aplane.bmp')

битовый образ pic будет содержать изображение самолета.

Вывести содержимое битового образа (картинку) на поверхность формы или области вывода иллюстрации можно путем применения метода Draw к соот­ветствующему свойству поверхности (Canvas). Например, инструкция

Imagel.Canvas.Draw(x,у, bm)

выводит картинку битового образа bm на поверхность компонента Image1 (параметры х и у определяют положение левого верхнего угла картинки на поверхности компонента).

Если перед применением метода Draw свойству Transparent объекта TBitMap присвоить значение True, то фрагменты рисунка, окрашенные цве­том, совпадающим с цветом левого нижнего угла картинки, не будут выведены — через них будет как бы проглядывать фон. Если в качестве "про­зрачного" нужно использовать цвет, отличный от цвета левой нижней точки рисунка, то свойству TransparentColor следует присвоить значение символьной константы, обозначающей необходимый цвет.

Создайте проект, который включает процедуру, приведенную в листинге 1. Программа демонстри­рует использование битовых образов для формирования изображения из нескольких элементов.

Листинг 1. Использование битовых образов

type

TForm1 = class(TForm)

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

sky,aplane: TBitMap; // битовые образы: небо и самолет

procedure TForm1.FormPaint(Sender: TObject);

begin

// создать битовые образы

sky := TBitMap.Create;

aplane := TBitMap.Create;

// загрузить картинки

sky.LoadFromFile('sky.bmp');

aplane.LoadFromFile('plane.bmp');

Form1.Canvas.Draw(0,0,sky); // отрисовка фона

Form1.Canvas.Draw(20,20,aplane); // отрисовка левого самолета

aplane.Transparent:=True;

// теперь элементы рисунка, цвет которых совпадает с цветом

// левой нижней точки битового образа, не отрисовываются

Form1.Canvas.Draw(120,20,aplane); // отрисовка правого самолета

// освободить память

sky.free;

aplane.free;

end;

После запуска программы в окне приложения (рис. 2) появляется изображение летящих на фоне неба самолетов. Фон и изображение самолета — битовые образы, загружаемые из файлов. Белое поле вокруг левого самолет показывает истинный размер картинки битового образа aplane. Белое поле вокруг правого самолета отсутствует, т. к. перед его выводом свойству Transparent битового образа было присвоено значение True.

Рис. 2. Влияние значение свойства Transparent

на вывод изображения

Мультипликация

Под мультипликацией обычно понимается движущийся и меняющийся ри­сунок. В простейшем случае рисунок может только двигаться или только меняться.

Обеспечить перемещение рисунка, сформированного из графических примитивов (линий, окружностей, дуг, многоугольников и т. д.), довольно просто: надо сначала вывести рисунок на экран, затем через некоторое время стереть его и снова вывести этот же рисунок, но уже на некотором расстоянии от его первоначального положения. Подбором времени между выводом и удалением рисунка, а также расстояния между старым и новым положением рисунка (шага перемеще­ния), можно добиться того, что у наблюдателя будет складываться впечатление, что рисунок равномерно движется по экрану.

Задание 1. Создайте программу, которая демонстрирует движение окружности из левого нижнего в правый верхний угол окна программы. При этом радиус окружности должен уменьшаться от r0 до 0, чтобы имитировать удаление объекта. Вид формы программы показан на рис. 3.


Рис. 3. Форма программы Движущаяся окружность


Основную работу должна выполнять процедура Ris, которая стирает окружность и выводит ее на новом месте. Стирание окружности выполняется путем перерисовки окружности поверх нарисованной, но цветом фона.

Для обеспечения периодического вызова процедуры Ris в форму програм­мы добавлен невизуальный компонент Timer (таймер), значок которого находится на вкладке System палитры компонентов (рис. 4). Свойства компонента Timer перечислены в табл. 2.

Рис. 4. Значок компонента Timer

Таблица 10.9. Свойства компонента Timer

Свойство Определяет

N ame Имя компонента. Используется для доступа к компоненту

Interval Период генерации события OnTimer. Задается в миллисекундах

Enabled Разрешение работы. Разрешает (значение True) или запрещает

(значение False) генерацию события OnTimer

Д обавляется компонент Timer к форме обычным образом, однако, поскольку компонент Timer является невизуальным, т. е. во время работы программы не отображается на форме, его значок можно поместить в любое место формы.

Компонент Timer генерирует событие OnTimer. Период возникновения со­бытия OnTimer измеряется в миллисекундах и определяется значением свойства Interval.

Механизм периодического вызова процедуры Ris реализуется следующим образом: событие OnTimer запускает процедуру Timer1.Timer, которая, в свою очередь, вызывает процедуру Ris.

Использование битовых образов

В предыдущем задании изображение формировалось из графических при­митивов. Теперь рассмотрим, как можно реализовать перемещение одного сложного изображения на фоне другого, например перемещение самолета на фоне городского пейзажа.

Эффект перемещения картинки может быть создан путем периодической перерисовки картинки с некоторым смещением относительно ее прежнего положения. При этом предполагается, что перед выводом картинки в новой точке сначала удаляется ее предыдущее изображение. Удаление картинки мо­жет быть выполнено путем восстановления той части фона, которая была перекрыта битовым образом движущегося объекта-картинки.

Задание 2. Летящий самолет. Разработайте процедуру обработки события onTimer для программы, приведенной в приложении 1. Программа должна выводить на экран самолет, летящий на фоне городского пейзажа Файлы с картинками фона (factory.bmp) и самолета (plane.bmp) скопируйте в папку проекта. Картинка выво­дится применением метода Draw к свойству Canvas компонента Image, a стирается путем копирования (метод CopyRect) нужной части фона из бу­фера на поверхность компонента Image.

Форма программы приведена на рис. 5.

Компонент Image используется для вывода фона, а компонент Timer — для организации задержки между циклами удаления и вывода на новом месте изображения самолета.

Рис. 5. Форма программы Самолет

Для хранения битовых образов (картинок) фона и самолета, а также копии области фона, перекрываемой изображением самолета, используются объек­ты типа TBitMap, которые создаются динамически процедурой FormActivate. Эта же процедура загружает из файлов картинки фона (factory.bmp) и самолета (plane.bmp), а также сохраняет область фона, на которую первый раз будет накладываться картинка.

Сохранение копии фона выполняется при помощи метода CopyRect, кото­рый позволяет выполнить копирование прямоугольного фрагмента одного битового образа в другой. Объект, к которому применяется метод CopyRect, является приемником копии битового образа. В качестве параметров методу передаются координаты и размер области, куда должно быть выполнено копирование, поверхность, откуда должно быть выполнено копирование, а также положение и размер копируемой области.

Информация о положении и размере копируемой в буфер области фона, на которую будет наложено изображение самолета и которая впоследствии должна быть восстановлена из буфера, находится в структуре BackRct типа TRect. Для заполнения этой структуры используется функция Bounds.

Для того чтобы в начале работы программы у наблюдателя создавалось впечатление, что самолет вылетает из-за левой границы окна, задайте начальное значение переменной x, которая определяет положение левой верхней точки битового образа дви­жущейся картинки, отрицательным числом, равным ширине битового образа картинки. Тогда в начале работы программы изображение самолета не появляется, картинка отрисовывается за границей видимой области. С каж­дым событием onTimer значение координаты x будет увеличиваться, и на экране появится та часть битового образа, координаты которой больше нуля.

Характеристики

Тип файла
Документ
Размер
133,5 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

Лабораторная работа №6
6
6_Самолет1
__history
bmp.dfm.~1~
bmp.pas.~1~
bmp.pas.~2~
bmp.pas.~3~
BMPprj.bdsproj
BMPprj.bdsproj.local
BMPprj.cfg
BMPprj.dof
BMPprj.dpr
BMPprj.exe
BMPprj.identcache
BMPprj.res
BMPprj.~dpr
Unit2.dcu
bmp.dcu
bmp.ddp
bmp.dfm
bmp.pas
bmp.~ddp
bmp.~dfm
bmp.~pas
6_Самолет2
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее