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


Пример программы просмотра графики


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

Пример программы просмотра графики
Теперь, когда мы разобрались с графикой в Delphi, попробуем создать более удобную программу для просмотра графических изображений. За основу возьмем программу для просмотра файлов - FileView, поскольку она уже содержит все необходимое для того, чтобы пользователь мог осуществлять навигацию по файловой системе своего ПК. Но прежде нам понадобится сделать некоторые изменения, в частности, было бы полезно переместить все имеющиеся компоненты непосредственно с поверхности формы на панель. Для этого сначала выделим все компоненты формы и вырежем их в буфер обмена (Ctrl+X). Затем поместим на форму панель и для ее свойства Align установим значение alLeft, в результате чего она займет все пространство по левому краю формы. Убедившись, что панель в данный момент является выбранным компонентом, произведем вставку из буфера обмена (Ctrl+V). Все ранее удаленные с поверхности формы компоненты появятся в том же виде на поверхности панели.
Разобравшись с компонентами, обеспечивающими навигацию по файлам, на пустующую правую часть формы поместим компонент ScrollBox, который находится на закладке Additional палитры компонентов. Этот компонент позволяет размещать объекты, размеры которых могут превышать отведенное для них на форме пространство. Чтобы он занял все оставшееся место, установим для него значение свойства Align в alClient, после чего поместим на него компонент Image, выровняв его по левому верхнему углу (т.е. установив свойства Left и Top в 0). Чтобы компонент мог отобразить изображение любого размера, установим его свойство AutoSize в истину.
После этого нам остается внести некоторые изменения в свойство Filter компонента-списка фильтров (назовем его FilterCb). А именно, при помощи редактора фильтра, вместо первой строки "Все программы", напишем "Все изображения" и установим следующий список расширений: "*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf", после чего не забудем дописать модуль jpeg в uses. Так же можно предусмотреть возможность отбора всех этих типы файлов по отдельности, например, "Изображения в формате JPEG" с фильтром "*.jpg;*.jpeg".
Убедимся, что все компоненты правильно именованы (скажем, Image - Img, а ScrollBox - ImgSb) и приступим к написанию кода - на сей раз нам без этого не обойтись, хотя кода и потребуется всего одна строчка:
Img.Picture.LoadFromFile(FileLst.FileName);
Вопрос может быть только в том, в ответ на какое событие должен исполняться данный код. Вариантов может быт несколько, но ограничимся двойным щелчком мышкой по списку файлов, т.е. помести его в процедуру TMainFrm.FileLstDblClick. Таким образом, запустив приложение, можно выбрать любой графический файл из поддерживаемых программой форматов. Впрочем, учитывая настройки фильтра, только такие и будут отображаться в списке. Наконец, остается дважды щелкнуть по выбранному файлу, чтобы открыть его для просмотра. Если при этом изображение не будет помещаться целиком в области ScrollBox, то автоматически появятся полосы прокрутки (рис. 15.3).

Рис. 15.3. Программа просмотра изображений
Вместе с тем, в такой программе не помешало бы иметь возможность увидеть все изображение сразу, пусть и в уменьшенном масштабе. Реализовать переключение между режимами просмотра можно так же по двойному щелчку мышкой, но только уже не по списку файлов, а по самому изображению. Так что для элемента Img создадим следующий обработчик события OnDblClick:
procedure TMainFrm.ImgDblClick(Sender: TObject); begin Img.Proportional:=not Img.Proportional; if Img.Proportional then Img.Align:=alClient else Img.Align:=alNone; end;
В приведенном коде сначала значение свойства Proportional меняется на противоположное, после чего, в зависимости от того, включено ли масштабирование, изменяется свойство Align изображения. Суть тут в том, что если свойство Align компонента, помещенного в область прокрутки, установлено в alClient, то размеры этого компонента не могут быть больше, чем видимая часть области прокрутки. Если же размещение не задано (alNone), то, учитывая заданное нами изначально значение истины для свойства AutoSize элемента Img, этот компонент займет столько места, сколько необходимо для того, чтобы полностью показать все изображение.
В заключение остается добавить, что получившийся исходный код расположен в каталоге Demo\Part3\PicView.

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