Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №20.pdf
Скачиваний:
17
Добавлен:
16.03.2015
Размер:
737.92 Кб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Лабораторная работа № 20 Графические возможности Delphi.

Введение

В лабораторной работе рассмотрены основные классы Object Pascal для вывода графики. В частности рассмотрены классы TFont, TPen, TBrush, TCanvas. Также рассмотрен класс TImage, позволяющий размещать на форме изображения из различных графических файлов.

Компонент TImage

Изучение графических возможностей начнем с компонента TImage , который расположен на вкладке Additional палитры компонентов (рисунок ).

Рисунок 1 – Расположение компонента TImage в палитре компонентов

Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi изображений:

растрового рисунка (класс TBitmap);

иконки (класс TIcon);

метафайла (класс TMetaFile).

Основные свойства компонента TImage приведены в таблице 1.

Таблица 1 – Свойства компонента TImage

Свойство

Описание

 

 

property AutoSize:Boolean;

Разрешает/запрещает изменять размеры компонента так,

 

чтобы в нем полностью разместилось изображение.

property Canvas: TCanvas;

Содержит холст для прорисовки изображения.

property Center:Boolean;

Центрирует изображение в пределах компонента.

 

Игнорируется, если AutoSize=true или Stretch=true и

 

изображение не является значком.

property Picture:TPicture;

Содержит изображение.

property Stretch:Boolean;

Масштабирует изображение таким образом, чтобы оно

 

целиком заполнило компонент.

property Transparent:Boolean;

Разрешает/запрещает использование «прозрачного

 

цвета»

Собственно изображение содержится в свойстве Picture компонента. property Picture:TPicture;

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Класс TPicture является контейнером для изображений различных типов. Некоторые методы и свойства этого класса приведены ниже.

Методы LoadFromFile и SaveToFile служат для загрузки изображения из файла и сохранения изображения в файл соответственно.

procedure LoadFromFile(const Filename: string); procedure SaveToFile(const Filename: string);

Свойства Height и Width определяют высоту и ширину изображения в пикселях. property Height: Integer;

property Width: Integer;

Интерпретирует графический объект как растровое изображение property Bitmap: TBitmap;

Содержит графический объект. property Graphic: TGraphic;

Интерпретирует графический объект как значок. property Icon: TIcon;

Интерпретирует графический объект как метафайл. property Metafile: TMetafile;

Событие OnChange происходит при любых изменения объекта TPicture. property OnChange: TNotifyEvent;

Событие OnProgress используется при загрузке больших изображений, когда время загрузки велико. Обычно используется для индикации процесса загрузки (например, на форму выводится % загрузки изображения).

property OnProgress: TProgressEvent;

Класс TGraphic – это абстрактный класс, инкапсулирующий общие свойства и методы всех трех своих потомков: значка (TIcon), метафайла (TMetaFile) и растрового изображения (TBitmap). Общей особенностью потомков TGraphic является то, что они сохраняются в файлах определенного формата. В Delphi 4 был введен еще один класс, потомок TGraphic – это класс TJpegImage. Этот класс позволяет загружать файлы jpeg. Для того чтобы этот класс стал доступен, подключите модуль Jpeg к форме, на которой находится компонент TImage.

При создании собственных классов, реализующих загрузку изображений из файлов других типов, следует использовать в качестве родительского класс TGraphic.

Рассмотрим пример создания простейшей программы, реализующей просмотр графических файлов.

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

панель инструментов TToolBar (tbStandart);

строку состояния TStatusBar (StatusBar);

компонент TImage (Image);

компонент TImageList (ImageList);

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

компонент TOpenPictureDialog (OpenPictureDialog) с вкладки Dialogs

палитры компонентов.

Добавьте в компонент ImageList несколько изображений. Установите значение свойства Images компонента tbStandart равным ImageList. Добавьте на панель инструментов две кнопки tbnOpen и tbnExit. Установите для этих кнопок соответствующие иконки с помощью свойства ImageIndex.

Установите значение свойства Align компонента Image равным alClient, после чего компонент займет всю свободную поверхность формы. Установите значение свойства

AutoSize равным True.

Создайте в строке состояния две панели: первую шириной 100 точек, а вторую неограниченной ширины (Width=-1).

После выполнения приведенных действий форма примет вид как на рисунке 2.

Рисунок 2 – Вид формы после добавления и настройки компонентов.

Настройте свойство Filter компонента OpenPictureDialog как показано на рисунке 3.

Рисунок 3 – Настройка фильтра файлов

Добавьте в список модулей формы, модуль Jpeg. Это необходимо для того, чтобы была возможна загрузка файлов jpeg.

Создайте обработчики событий для кнопок btnOpen и btnExit (листинг 1).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Листинг 1 – Обработчики событий для кнопок

procedure TfrmImageView.btnOpenClick(Sender: TObject); begin

if OpenPictureDialog.Execute then begin

try

//загрузка изображения в объект TPicture Image.Picture.LoadFromFile(OpenPictureDialog.FileName); //вывод в строку состояния ширины и высоты изображения

StatusBar.Panels[0].Text:='('+IntToStr(Image.Picture.Width)+

':'+IntToStr(Image.Picture.Height)

+')'; //вывод в строку состояния имени файла

StatusBar.Panels[1].Text:=

ExtractFileName(OpenPictureDialog.FileName);

except

//обработка ошибок on EInvalidGraphic do

MessageBox(Handle, 'Неизвестный формат файла', 'Ошибка', MB_OK or MB_ICONERROR);

on EInOutError do

MessageBox(Handle, 'Ошибка ввода-вывода',

'Ошибка', MB_OK or MB_ICONERROR);

else

MessageBox(Handle, 'Неизвестная ошибка',

'Ошибка', MB_OK or MB_ICONERROR);

end;{try} end;

end;

procedure TfrmImageView.btnExitClick(Sender: TObject); begin

Close;

end;

Работа с компонентом TOpenPictureDialog аналогична работе с уже рассмотренным компонентом TOpenDialog поэтому данный компонент не рассматривается. Откомпилируйте программу. Попробуйте загрузить изображение, убедитесь, что программа работает корректно.

Если компонент TImage используется как декоративный элемент при оформлении окон программы, то удобнее загружать изображение в этот компонент уже на этапе разработки формы. Сделать это можно с помощью редактора свойства Picture компонента.

Модифицируем программу приведенную выше. Добавьте в проект новую форму (frmAbout), нажав кнопку «New Form» на панели инструментов.

Поместите на форму кнопку btnOk, компонент TLabel и компонент TImage (Image). Загрузите в свойство Picture, компонента Image, изображение с помощью редактора свойства «Picture Editor» (рисунок 4).