Лабораторная работа №5 (2 часа)
Программирование графики
Цель: получить навыки работы с графической подсистемой средствами Delphi; создать ПП с элементами графического интерфейса.
Оборудование: ПЭВМ IBM PC-AT.
Программные средства: ОС семейства Windows, среда Delphi 5.* (или выше).
Задание
Написать программу, которая при выполнении закрашивает собственную рабочую область окна заданным цветом с плавным переходом тона. При этом поверх закрашенной области вывести анимированное изображение бегущего человека.
Варианты цветов указываются в табл. 5.1.
Таблица 5.1
№ | Цвет |
1 | Красный |
2 | Желтый |
3 | Зелёный |
4 | Голубой |
5 | Синий |
6 | Серый |
Программа работы
1. Изучить свойства и методы работы с компонентом TCanvas.
2. Изучить работу функции RGB().
3. Получить вариант задания.
4. Разобраться с алгоритмами примеров отдельных частей исходного кода.
5. Придумать формулы для формирования аргументов функции RGB().
6. Получить набор файлов с изображениями кадров видеоряда.
7. Написать текст программы.
8. Выявить и исправить ошибки.
9. Расставить по тексту комментарии.
10. Откомпилировать исходный текст программы.
Пояснения к работе
Сердцевиной графической подсистемы Delphi является класс TCanvas.
Большинство визуальных компонентов, с которыми имеет дело разработчик программного обеспечения в среде Delphi, обладают собственным свойством (property) типа TCanvas. В дальнейшем это свойство для любого компонента мы будем называть просто "канвой".
|
|
Для рисования канва включает в себя шрифт (TFont), перо (TPen) и кисть (TBrush), а также имеет набор функций для рисования типовых геометрических фигур. Кроме того, можно рисовать, получив доступ к каждому пикселю. Свойство канвы Pixels[X, Y], имеющее тип TColor, соответствует цвету точки с координатами (X,Y), где X и Y - типа Integer.
Цвета точек могут быть заданы с помощью функции RGB (bRed, bGreen, bBlue), где bRed, bGreen, bBlue - соответствующая доля красного, зеленого и синего в суммарном цвете RGB. Значение доли каждого цвета задается в единицах в диапазоне от 0 до 255.
Наглядно исследовать работу функции RGB() можно через окно Инспектора объектов при расширенном определении цвета (свойства Color для любого визуального компонента), двигая полозок насыщенности тона и наблюдая изменения значений bRed, bGreen и bBlue.
Набор кадров для анимации (из файла Ran_1.bmp) требуется преобразовать с помощью редактора Paint в 11 отдельных файлов. Далее с помощью метода-обработчика LoadFromFile для свойства Picture и события OnTimer компонента TImage задаётся циклическое изменение картинки на канве.
Указания к выполнению работы
Изучите работу функции RGB().
|
|
Запустите оболочку Delphi.
Создайте новое приложение.
Задайте ширину и высоту окна формы по 255 пикселей.
Закрасьте рабочее поле формы цветом, определённым в соответствии с вариантом, так, чтобы получился плавный переход сверху вниз от самых темных тонов к самым светлым (рис. 5.1). Для этого разместите на форме компонент TImage, установите значение его свойства Align в alClient. Далее используйте событие OnShow для Form1 и "заготовку" обработчика для него, где требуется правильно задать значения параметров функции RGB(), обозначенные знаком "?":
With Image1.Canvas do
Begin
Pen.Width := 2;
Pen.Style := psInsideFrame;
for y := 255 downto 0 do
for x := 0 to 255 do
Pixels [y,x] := RGB (?,?,?);
end;
К примеру, для получения плавного перехода серого цвета все три параметра функции RGB() должны определяться однозначно переменной y:
Pixels [y,x] := RGB (y,y,y);
Поместите в поле формы ещё один компонент TImage. Задайте его свойству TransParent значение True.
Добавьте в форму компонент TTimer.
Используя набор графических изображений из 11 файлов, в теле обработчика события OnTimer задайте смену кадров на канве компонента Image2. Для этого применяйте счётчик кадров (глобальную переменную типа integer), функцию преобразования типа integer в string (IntToStr()) (для формирования имени файла с изображением очередного кадра) и метод-обработчик LoadFromFile (для загрузки изображения из этого файла).
|
|
Подберите наиболее подходящий интервал для работы таймера.
Протестируйте и проверьте правильность выполнения вашей ПП.
Рис. 5.1. Плавный переход полутонов
Подключите к проекту собственную иконку, задайте название для формы и откомпилируйте конечный вариант программы.
Продемонстрируйте работу преподавателю.
Контрольные вопросы и задания
1. Какие компоненты инкапсулирует в себе класс TCanvas?
2. Каковы назначение и функции компонента TFont?
3. Каковы назначение и функции компонента TPen?
4. Каковы назначение и функции компонента TBrush?
5. Раскройте назначение функции RGB.
Дата добавления: 2018-05-13; просмотров: 271; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!