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

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

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

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

procedure TFormI.ButtonlClick(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 (см. п. 16.5.5), к которому относится свойство 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-play компонента содержит True. r - прямоугольник, нуждающийся в прорисовке. Msg содержит одно или более слов, уточняющих состояние процесса. Обычно в обработчике события по сигналу psStarting создается индикатор процесса типа TprogressBar, по сигналам psRunning изменяется позиция индикатора, а в момент psEnding индикатор уничтожается. Следует учесть, что событие onprogress создается только при загрузке некоторых типов изображений, например, подготовленных в формате JPEG (Joint Photographic Expert Group - объединенная группа фотографических экспертов) [ Для поддержки JPEG в Delphi включен специальный класс TJPEGImage. Пример использования этого класса, а также события OnProgress вы найдете в программе help\examples\jpeg\jpegproj.dpr каталога размещения Delphi. ].