Работа с файлами и мультимедиа


Отображение графических изображений


Download 361.5 Kb.
bet3/9
Sana20.10.2023
Hajmi361.5 Kb.
#1711567
TuriЛекции
1   2   3   4   5   6   7   8   9
Bog'liq
Работа с файлами и мультимедиа

Отображение графических изображений
Для отображения графических изображений используют компонент Image - изображение, относящийся к группе дополнительных (Additional) компонент. Обычно его помещают на поверхность формы и используют для отображения рисунков, в том числе, хранящихся в виде файлов. Компонент Image является наследником класса TGraphicControl и имеет несколько собственных свойств, связанных с графикой. Прежде всего, это самое главное свойство Image - Picture, которое служит для непосредственной работы с изображениями и имеет тип TPicture. Позже мы рассмотрим этот класс подробнее, пока же примем к сведению, что все операции над самим изображением (включая загрузку файла) выполняется посредством этого свойства.
Остальные свойства Image относятся к способам размещения изображения в рамках данного компонента. Так, свойство Center определяет, должно ли изображение быть размещено по центру (истина), или нет (ложь), в последнем случае оно будет выровнено по левому верхнему углу. Еще 2 свойства - Stretch и Proportional отвечают за масштабирование изображения. Так, если свойство Stretch установлено в истину, то изображение будет занимать все пространство, отведенное для компонента Image. Если оно при этом меньше, то оно будет увеличено, если больше - то сжато. При этом пропорции (отношение ширины к высоте) самого изображения не учитываются, что обычно приводит к искажениям. Поэтому, начиная с Delphi 6, было введено еще одно свойство - Proportional. Если оно установлено в истину, то изображение в любом случае сохранит свои исходные пропорции. Кроме того, если оно меньше, чем область, отведенная для изображения, то оно останется в исходных размерах, если только свойство Stretch так же не установлено в истину. Если же рисунок больше, то, вне зависимости от значения, заданного для Stretch, он будет пропорционально уменьшен до такого размера, чтобы поместиться в области компонента Image.
Свойство Transparent отвечает за прозрачность фоновых участков изображения: когда оно установлено в истину, фоновый цвет на рисунке заменяется прозрачным фоном. Правда, данный эффект распространяется не на все типы изображений.
Наконец, еще одно свойство, IncrementalDisplay, позволяет выбирать режим показа изображений: если установить его в истину, то файлы будут отображаться постепенно, по мере считывания и раскодирования. Это может быть актуально для больших сжатых файлов, например, для 5-мегапиксельных JPEG-изображений, особенно сохраненных в высоком качестве. При этом можно получать информацию о ходе загрузки изображения при помощи обработки события OnProgress. Это единственное собственное событие рассматриваемого компонента. Оно имеет тип TProgressEvent, для которого определен следующий синтаксис:
procedure (Sender: TObject; Stage: TProgressStage; PercentDone: Byte; RedrawNow: Boolean; const R: TRect; const Msg: string) of object;
Аргумент Sender, как обычно, ссылается на объект, получивший уведомление о событии. Приблизительный процент выполнения операции можно получить, обратившись к PersentDone, а общее состояние - начало загрузки (psStarting), выполнение загрузки (psRunning) и завершение загрузки (psEnding) - к Stage. Ну а RedrawNow показывает, может ли быть отображена уже загруженная часть изображения, определяемая координатами прямоугольника R. На практике обычно используют только PercentDone, да и то следует учитывать, что это актуально только для файлов JPEG:
ProgressBar1.Position:=PercentDone;
Создадим простейшее приложение, которое может отображать рисунки. Для этого на форме, помимо Image, нам понадобятся следующие компоненты:

  • Рамка (Bevel), чтобы визуально ограничить отведенную для рисунка область;

  • Диалог открытия файла и кнопка для его вызова. Для диалога в качестве фильтра можно задать "Изображения |*.bmp;*.ico;*.wmf;*.emf;*.jpeg;*.jpg";

  • Индикатор выполнения, чтобы отображать ход загрузки JPEG-файлов.

По той причине, что стандартными средствами изображения типа JPEG не поддерживаются, то для того, чтобы программа могла с ними работать, в список используемых модулей следует добавить jpeg.
Сам код программы сводится всего лишь к 2 процедурам: обработчику OnClock копки, и обработчику OnProgress изображения. В результате мы получим код, приведенный в листинге 15.1.

Download 361.5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling