Компонент работы с графическими файлами (Timage)

Компонент работы с графическими файлами (Timage)Этот компонент вы можете найти на вкладке Additional палитры компонентов.  Тогда же не затрагивались другие его возможности, потому что вы еще не бы­ли готовы познакомиться с графикой. Сейчас, когда мы рассмотрели все необхо­димое, пора разобрать этот компонент по свойствам и методам.

 

Компонент Timage достаточно универсальный и может отображать картинки разного формата. Но в начальной установке он может загружать только файлы форматов BMP, JPG, JPEG или WMF. Давайте посмотрим, как это делается. Соз­дайте новое приложение и установите на форму одну кнопку и компонент Timage с вкладки Additional.

 

Теперь бросьте на форму компонент openPictureDialog с вкладки Dialogs. Этот компонент предназначен для ото­бражения на экране стандартного окна открытия картинки. Нам также понадо­бится кнопка, по нажатии которой мы будем отображать окно открытия кар­тинки и потом загружать выбранную.

 

На рис. выше вы можете увидеть форму будущей программы. Но пока готова только форма. Чтобы программа стала полноценной, надо написать код загрузки картинки. По нажатии кнопки Открыть картинку пишем следую­щий код:

 

 

В первой строке отображается стандартное окно открытия картинки. Для этого достаточно вызвать метод Execute компонента OpenPictureDialogl, т. е. написать OpenPictureDialogl.Execute. Этот метод возвращает логическое значение.

 

Закажи видеокурс по программированию в Delphi прямо сейчас и получи 106 видеоуроков! Кликни на картинку:

Компонент работы с графическими файлами (Timage)

ЗАКАЗАТЬ!

Если оно равно true, то пользователь выбрал файл, иначе нажал отмену. Именно поэто­му мы проверяем результат вызова метода Execute с помощью:

if OpenPictureDialogl.Execute then

Если файл выбран, то выполняется следующий код:

Image1.Picture.LoadFromFile(OpenPictureDialogl.FileName);

Разберем эту конструкцию по частям. У компонента imagel есть свойство picture. Это свойство имеет объектный тип (а значит, и свои свойства и методы) TPicture. Этот объект предназначен для работы с изображениями практически любого типа. Он достаточно универсален, в чем мы очень скоро убедимся.

 

Для загрузки изображения мы используем метод LoadFromFile (загрузить кар­тинку из файла) объекта picture. В качестве единственного параметра этого мето­да нужно указать имя открываемого файла или полный путь, если картинка нахо­дится не в той же папке, что и сама программа.

 

Мы выбираем имя файла с помощью стандартного окна, и полный путь к файлу находится В свойстве FileName компонента OpenPictureDialogl.

 

Все достаточно просто. Попробуйте теперь запустить программу и посмотреть на результат ее работы. В окне открытия файла посмотрите, какие типы файлов можно открывать. В зависимости от версии и установленной комплектации коли­чество типов может быть от 1 до 3 — BMP, ICO и WMF.

 

Давайте научим нашу программу работать с форматом JPEG. Не волнуйтесь, это не сложно и нам не придется писать сложный алгоритм распаковки изображения.

В Delphi уже есть все необходимое, надо только это необходимое подключить к проекту.

 

Для начала переместитесь в раздел uses проекта и подключите туда модуль jpeg. В этом модуле описано все необходимое для работы с форматом изображе­ний JPEG.

В принципе, этого достаточно. Осталось только заставить окно открытия файлов показывать фильтр на данный тип файлов. Для этого выделите компонент OpenPictureDialogl И дважды щелкните по свойству Filter. Пе­ред вами откроется окно настройки фильтра, как показано на рис:

Компонент работы с графическими файлами (Timage)

В этом окне есть несколько за­полненных строк. На рисунке только три. В четвертой строке (первой пустой строке) напишите в первой колонке "JPEG Files", а во второй колонке напишите "*.jpg". Можете нажимать ОК и запускать программу. Теперь в окне открытия графического файла можно выбрать тип .jpg и открыть нужный файл. Он также будет загружен в компонент imagel, даже несмотря на свой сложный алгоритм сжатия и другой вид хранения данных.

Компонент работы с графическими файлами (Timage)

Теперь попробуем модернизировать пример и получить доступ к содержимому картинки. Для этого мы будем копировать изображение, используя прозрачность. Как? Сейчас узнаете.

Создайте обработчик события OnPaint для главной формы в уже созданном на­ми примере. В процедуре FormPaint напишите следующее:

 

А в процедуре, где мы загружаем изображение, нужно в конце добавить вызов метода Repaint, чтобы после открытия графического файла форма прорисовалась заново и вызвался

Компонент работы с графическими файлами (Timage)обработчик OnPaint.

Теперь попробуйте запустить программу и загрузить в нее файл формата BMP. Вы должны увидеть результат, подобный тому, что показан на рис. 12.13. Слева у нас находится изображение картинки image1, а справа мы делаем копию изображения на форму.

А вот теперь давайте посмотрим, что тут происходит. Код окажется немного сложным, но это только на первый взгляд. Рассмотрим все по частям. Мы исполь­зуем процедуру Brushcopy у уже знакомого canvas . Эта процедура копирует на canvas картинку.

 

 

Область приемника объявлена как TRect, который имеет вид TRect = (Left, Top, Right, Bottom: Integer). С тем, ЧТО находится В скобках, мы познакомились ранее. То же самое и с областью источника. В качестве картин­ки передается Bitmap ИЗ Timage.

 

В качестве прозрачного цвета мы использовали цвет пиксела в позиции [1, 1] картинки Timage. На это указывает запись:

Image1.Picture.Bitmap.Canvas.Pixels[1,1]

Попробуем записать ее немного по-другому:

TImage1. Его_картинка. Bitmap. Холст. Пиксел [ 1_по_оси_Х, 1_по оси_У]

Обратите внимание, что если вы сейчас попытаетесь открыть какой-нибудь не BMP-файл, то программа ничего не отобразит. Это связано с тем, что только ВМР- файлы хранят свои изображения в свойстве Bitmap, все остальные хранят в свойстве Graphic или Metafile (для векторного формата). Так что получить доступ 

к JPEG-изображению таким образом нельзя. Зато можно с помощью метода Draw. Для этого нужно подкорректировать обработчик события OnPaint: 

Здесь мы уже рисуем не Bitmap, a Graphic, поэтому программа будет работать корректно.

Векторные файлы, например, формата WMF, хранят свои данные в свойстве Metafile. Для их отображения обработчик события OnPaint должен быть таким:

 

Если Вы хотите сделать движущиеся, анимированные картинки - то посмотрите видеоурок:

 

Скачайте бесплатно целый видеокурс по Delphi одним архивом - СКАЧАТЬ БЕСПЛАТНО!

dle

Помоги проекту! Расскажи друзьям об этом сайте: