Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
21
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

3.2.6. TImage - отображение картинок

Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растровой картинки, пиктограммы или метафайла. Любой из этих типов изображения содержится в центральном свойстве компонента - Picture. В свойстве canvas содержится канва, с помощью которой при необходимости программа может отредактировать растровое изображение (но не пиктограмму или метафайл!).

Вот как можно создать несложный просмотрщик изображений, окно которого показано на рис. 3.25.

Поместите на форму панель TPanel, очистите ее свойство Caption и поместите значение alBottom в свойство Alignment - панель займет нижнюю часть формы.

Разместите на панели кнопку TButton с надписью загрузить.

На любое свободное место формы (над панелью) поместите компонент TImage и установите в его свойство Align значение alClient.

На любое место (TImage, TPanel или даже TButton) поместите cтандартный диалог TOpenPictureDialog (страница Dialogs палитры компонентов) - с его помощью пользователь вашей программы сможете разыскать нужный файл с изображением.

Рис.3.25. Компонент TImage воспроизводит изображение

Напишите такой обработчик события OnClick для кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject) ;

begin

if OpenPictureDialogI.Execute then

begin

Imagel.Picture.LoadFromFile (OpenPictureDialogI.FileName);

Imagel.Stretch := True

end

end;

Замечу, что оператор

Imagel.Stretch := True

масштабирует изображение так, чтобы оно занимало всю рабочую область TImage.

Свойства компонента:

Свойство

Описание

property Center: Boolean;

Указывает, надо ли центрировать изображение в границах компонента. Игнорируется, если Autosize=True или если Stretch =True и изображение не является пиктограммой (ICO)

property Canvas : TCanvas;

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

property Transparent: Boolean;

Запрещает/разрешает накладывать собственный фон изображения на фон компонента

property Proportional: Boolean;

property Stretch: Boolean;

Разрешает/запрещает изменять размер изображения так, чтобы оно целиком заполнило клиентскую область компонента

property Picture: TPicture;

Разрешает/запрещает пропорционально уменьшать высоту и ширину изображения, если оно не может целиком уместиться в рабочей зоне компонента

property IncrementalDisplay: Boolean;

Разрешает/запрещает показ большого изображения по мере его загрузки Центральное свойство класса. Служит контейнером изображения

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

Для компонента определено событие onprogress, с помощью обработчика которого программа может получить дополнительную информацию во время выполнения длительной по времени операции загрузки крупного изображения:

type TProgressStage = (psStarting, psRunning, psEnding) ;

TProgressEvent = procedure (Sender: TObject;

Stage: TProgressStage; PercentDone: Byte;

RedrawNow: Boolean;

const R:

TRect; const Msg: String) of object;

property OnProgress: TProgressEvent

Параметр Stage содержит состояние процесса загрузки (psStarting - начало, psRunning - идет загрузка, psEnding - процесс завершен). Параметр PercentDone приблизительно указывает процент выполненной работы. С помощью параметра RedrawNow Windows сообщает, нужно ли сейчас выполнить прорисовку части изображения. Этот параметр имеет смысл, только если свойство Incrementaidisрlay компонента содержит True. R - прямоугольник, нуждающийся в прорисовке. Msg содержит одно или более слов, уточняющих состояние процесса. Обычно в обработчике события по сигналу psStarting создается индикатор процесса типа TprogressBar, по сигналам psRunning изменяется позиция индикатора, а в момент psEnding индикатор уничтожается. Следует учесть, что событие ОnРrogress создается только при загрузке некоторых типов изображений, например, подготовленных в формате JPEG (Joint Photographic Expert Group - объединенная группа фотографических экспертов) [Для поддержки JPEG в Delphi включен специальный класс TJPEGImage.