Изображение (форматы/расширения) | |||||
Программы | Свойства/возможности | Вид компьют. графики | |||
Просмотр | Редактирование | Визуальные | Системные | Векторный | Растровый |
Мы повторили свойства изображения и может с утверждением сказать о том, что стандартным форматом графического файла в ОС Windows является формат bmp (bitmap). Это говорит о том, что файлы этого типа и это расширение является основным для применения в проектах разрабатываемых в системах программирования под ОС Windows. При разработке приложений, в которых появляется необходимость открытия, просмотра и редактирования форматов jpg, gif, png код программы на языке программирования существенно увеличивается для преобразования имеющегося в формат bmp или применяются стронние компоненты. Среди сторонних компонентов распространены библиотеки JVCL и FireMonkey, в которых без труда для разработчика можно использовать поддержку анимации, прозрачности и даже 3D. Давайте приведем пример разработки приложения для очень стандартной просмотры изображений формата bmp, которая даст необходимое представление о способах открытия изображения и изменении его свойств.
Что для этого нам может понадобится?
Для этого понадобится:
- Построить алгоритм разработки приложения
- Определить необходимые компоненты
- Разместить компоненты на форме
- Установить свойства и изменить свойства компонентов
- Создать и сохранить изображение формата bmp
- Сохранить и скомпилировать проект в системе программирования
- Описать алгоритм работы с программой просмотра изображений
Алгоритм разработки:
- Создать новый проект
- Сохранить проект в новой папке
- Определить положение палитры компонентов «Standart», «Additional» и «Dialogs»
- С закладки компонентов Standart разместить на форме компоненты Panel1 и Panel2
- Изменить свойства компонента Panel1: Align – alTop, Caption – стереть и оставить пустым
- Изменить свойства компонента Panel2: Align – alClient, Caption – стереть и оставить пустым
- С закладки компонентов Standart разместить на Panel1 компоненты Button1, Button2, Button3
- Изменить свойства компонента Button1: произвольные Height/Width, Caption – «Открыть»
- Изменить свойства компонента Button2: произвольные Height/Width, Caption – «По центру»
- Изменить свойства компонента Button3: произвольные Height/Width, Caption – «Растянуть»
- С закладки компонентов Dialogs разместить на Panel1 компонент OpenDialog1
- Изменить свойства Filter компонента OpenDialog1: […]
FilterName | Filter |
*.bmp | *.bmp |
- С закладки компонентов Additional разместить на Panel2 компонент Image1
- Изменить свойство компонента Image1: Align – alClient
- Сохранить проект
Ваш проекта после проделанных операций должен принять следующий вид:
Перед тем как перейти к написанию кода программы вспомним события и их пояснение
Events | События (пояснение) |
OnClick | Событие возникающее при щелкчке ЛКМ в момент действия пользователя |
OnClose | Событие возникающее при щелкчке ЛКМ на значке «Закрыть» в заголовке окна |
OnCreate | Событие возникающее в момент инициализации (запуска) приложения, т.е. до открытия форм приложения (Application.Run) |
OnDblClick | Событие возникающее при двойном щелкчке ЛКМ в момент действия пользователя |
OnHide | Событие возникающее в момент скрытия формы с панели задач (Н.:Form1.Hide) |
OnKeyDown | Событие возникающее в процессе нажатия кнопки или их группового сочетания на клавиатуре в момент действия пользователя |
OnMouseDown | Событие вознкаиющее в процессе нажатия и удерживания ЛКМ пользователем до того момента, пока ЛКМ не будет отпущена |
OnMouseMove | Событие вознкаиющее в процессе удерживания и перемещения ЛКМ пользователем до того момента, пока ЛКМ не будет отпущена |
OnMouseUp | Событие возникающее в момент когда после события OnMouseDown ЛКМ пользователем будет отпущена |
OnPaint | Событие вызываемое для включения режима работы с графикой Сanvas на форме |
OnResize | Событие возникающее в момент изменения размера формы в зависимости от действий пользователя или разрешения экрана |
OnShow | Событие возникающее в момент открытия формы в многоформенном приложении (Н.:Form3.Show) |
Мозговой штурм:
- Как эти события могут быть применены к разрабатываемому приложению?
- В каком событии описывается процедура при нажатии левой кнопкой мыши по кнопке?
- Действие, возникающее после нажатия на кнопку описывается в событии…?
- Какое событие или какая группа событий возникают при изменении действий пользователя в процессе работы с ЛКМ? Например: нажатие и перемещение, нажатие и удержание…
- Для того чтобы открыть изображение в любом графическом редакторе пользователю необходимо проделать следующие действия. Опишите их? Дайте пояснение к работе пользователя, например, сколько раз он нажимает левой кнопкой мыши на пунктах меню? Какие события возникают в эти моменты?
Свойства у компонентов изменены, форма готова, проект сохранен. Если мы скомпилируем проект, то пока это будут просто форма с размещенными на ней компонентами. Кнопки будут не активны, по той простой причине, что никакие события в процедурах не описаны. Напишем код программы.
В событии OnClick кнопки Button1(Открыть) описывается процедура выбора, процесса открытия с помощью OpenDialog1 и загрузки изображения в компонент Image1. На естественном языке это можно записать так: если в диалоге открытия файла выбран файл, то в свойство отображения картинки компонента загрузки изображений загружается файл из указанного в диалоге открытия.
if opendialog1.execute then image1.picture.loadfromfile(opendialog1.filename);
Добавьте вышеуказанную строку в процедуру procedure TForm1.Button1Click(Sender: TObject); Скомпилируйте проект, запустите приложение нажатием на F9 на клавиатуре или воспользуйтесь значком «Run» на панели инструментов системы программирования. Откройте ваше приложение, откройте картинку в вашем приложении в режиме runtime.
Примечание. Процесс работы приложения называется по- иному runtime, т.е. все действия, производимые над приложением после его запуска (открытия) производятся в этом режиме. Процесс разработки приложения, включая написание кода программы, называется design time. |
В событии OnClick кнопки Button2(По центру – англ. Center (properties)) описывается процедура установки картинки по центру, а в событии OnClick кнопки Button3(Растянуть – англ. Stretch (properties)) описывается процедура растягивания картинки по всей области компонента Image1. Указанные изменения изображения - свойства компонента Image1, т.е. для изменения свойств в runtime в каждой из процедур к соответствующему свойству нужно присвоить логическое выражение true или false для возвращения в исходное положение, точно так же как к переменной присваивается ее значение.
Задание на повторение и обобщение. Присвойте к переменной a значение 5, к переменной c значение 5,2, к переменной d значение ‘d’, а к переменной b значение ‘мама’. Какие типы данных будут у этих переменных? Запишите на доске программу присваивания к переменным указанных значений.
После описания процедур весь текст программы должен принять следующий вид.
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.execute then image1.Picture.loadfromfile(opendialog1.filename);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Center:=true;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Image1.Stretch:=true;
end;
end. Программа готова!
Закрепление. Обратите внимание на свойства компонента Image1. Какие еще свойства можно добавить в текст нашей программы для расширения ее возможностей? Добавьте компоненты и опишите эти процедуры в событиях.