Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Указания к выполнению работы




 

Запустите оболочку Delphi.

Ознакомьтесь с набором компонентов, представленных на странице палитры Win 3.1.

Создайте новое приложение.

Сохраните новый проект в новой директории с именем "L_R_№4".

Поместите на поле формы следующие компоненты со страницы Win 3.1:

· TDriveComboBox;

· TDirectoryListBox;

· TFileListBox.

Расположите эти элементы в перечисленном порядке, выровняйте их и установите взаимные ссылки.

Для компонента FileListBox установите фильтр отображения файлов только с расширением BMP.

Поместите на форму компонент TPanel и задайте для него размеры по горизонтали и вертикали пропорционально отношению: 640х480. Свойство Panel1.BevelInner установите в bvLowered, а Panel1.BevelOuter в bvRaised. Пронаблюдайте реакцию.

Разместите на Panel1 компонент TImage. Его свойства AutoSize и Center установите в True, а Align - в alClient.

Обработчик события смены текущего файла для компонента-списка файлов запрограммируйте следующим образом. Объявите в нём две локальные переменные:

 

Bitmap: HBitmap ; // HBitmap – тип указателя на TBitmap

BM: Windows.TBitmap;

 

и внесите текст:

 

Bitmap:=LoadImage (0, PChar (FileListBox1. FileName), Image_Bitmap, 0, 0,

LR_LOADFROMFILE );

GetObject (Bitmap, SizeOf (BM), @BM);

if (BM.bmHeight > Image1.Height) or (BM.bmWidth > Image1.Width)

then Image1.Stretch := True

else Image1.Stretch := False;

if FileListBox1.FileName <> '' then

Image1.Picture.LoadFromFile (FileListBox1.FileName);

 

Задайте общее название для проекта и основной формы "Навигатор-просмотрщик файлов *.BMP". Подключите собственную иконку.

Сохраните проект. Запустите ПП на трансляцию и выполнение.

Продемонстрируйте работу преподавателю.

 

Контрольные вопросы и задания

 

1. Как установить взаимные ссылки между компонентами TDriveComboBox , TDirectoryListBox и TFileListBox? Для чего это необходимо?

2. По каким правилам формируется значение свойства Mask для компонента - списка файлов?

3. За что отвечает свойство Stretch компонента TImage?

4. Каково функциональное назначение свойства AutoSize компонента TImage?

5. Какое событие происходит при смене текущего файла у компонента TFileListBox?

 

Лабораторная работа №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-27; просмотров: 190.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...