Дает отображение графического изображения и обеспечивает работу с изображением
Страница библиотеки Additional
Класс TImage
Иерархия TObiect — TPersistent — TComponent — TControl — TGraphic-Control
Модуль extctrls
Описание
Компонент Image дает отображение на форме графического изображения. Свойство Picture типа TPicture содержит отображаемую графическую составляющюю у которой тип — битовая матрица, пиктограммы, метафайла или определенного пользователем типа. Свойство Canvas позволяет создавать и редактировать изображения.
Во время проектирования загрузить в свойство Picture графический файл можно щелкнув на кнопке с многоточием около свойства Picture в окне Инспектора Объектов или при нажатии дважды на Image. Должно открыться окно Picture Editor, которое позволит загрузить в свойство Picture некоторый графический файл (через кнопку Load), и сохранить открытый файл, дав ему новое имя или сохранить в новом каталоге.
Когда вы в процессе создания проекта сделали загрузку изображения из файла в компонент Image, он не просто отобразит его, но и сохранит загруженное изображение в приложении. Приемущества составляет в том, что ваш проект в целом будет поставляться без отдельного графического файла.
При установке свойства AutoSize равному true, то размер компонента Image будет автоматом подогнан под размер помещенной в image картинки. Если свойство AutoSize установлено в значение false, то изображение может и не уместиться в компонент или же, наоборот, площадь компонента возможно окажется намного больше площади изображения.
Другое свойство — Stretch позволяет реализовать подгонку не компонента под размер рисунка, а сам рисунок под параметр компонента. Но поскольку вряд ли реально в действительности установить размеры Image очень точно пропорциональными величине рисунка, то изображение будет искажено. При установке Stretch равное true может иметь смысл только для каких-то узоров, но не для картинок. Свойство Stretch не действует на изображения пиктограмм, которые не меняют своих размеров.
Свойство — Center, которое установленно в true, делает по центру изображение на площади Image, если параметры размера компонента больше параметра размеров рисунка.
Свойство — Transparent — прозрачность. Если значение Transparent равно true, то изображение в Image будет прозрачным. Это используется при наложения изображений друг на друга. Следует помнить, что свойство Transparent распространяется только на битовые матрицы. При этом прозрачным (т.е. заменяемым на цвет расположенного под ним изображения) делается по умолчанию цвет левого нижнего пиксела битовой матрицы.
Свойство Picture позволяет легко организовать обмен с графическими файлами любых типов в процессе выполнения приложения. Это свойство — объект, который имеет в свою очередь подсвойства, которые указывают на хранящийся графический объект. Если в Picture хранится битовая матрица, на нее указывает свойство Picture.Bitmap. Если хранится пиктограмма, на нее указывает свойство Picture.Icon. На хранящийся метафайл указывает свойство Picture.Metafile. Наконец, на графический объект произвольного типа указывает свойство Picture.Graphic.
Объект Picture и его свойства Bitmap, Icon, Metafile и Graphic имеют методы файлового чтения и записи LoadFromFile и SaveToFile. Для свойств Picture.Bitmap, Picture.Icon и Picture.Metafile формат файла должен соответствовать классу объекта: битовой матрице, пиктограмме, метафайлу. При чтении файла в свойство Picture.Graphic файл должен иметь формат метафайла. А для самого объекта Picture методы чтения и записи автоматически подстраиваются под тип файла.
Например, если вы имеете в приложении компонент-диалог OpenPicture-Dialog, то загрузка в Image выбираемого пользователем графического фала может быть организована оператором
if(OpenPictureDialogl.Execute) then
Imagel.Picture.LoadFromFile(OpenPictureDialogl.FileName);
Загружаемый этим оператором файл может быть любого типа: битовая матрица, пиктограмма или метафайл. Если будут открываться только файлы битовых матриц, то оператор загрузки файла можно заменить на
Imagel.Picture.Bitmap.LoadFromFile(OpenPictureDialogl.FileName);
Для пиктограмм можно было бы использовать оператор
Imagel.Picture.Icon.LoadFromFile(OpenPictureDialogl.FileName);
а для метафайлов — оператор
Imagel.Picture.Metafile.LoadFromFile(
OpenPictureDialogl.FileName);
ИЛИ
Imagel.Picture.Graphic.LoadFromFile(OpenPictureDialogl.FileName);
Но во всех этих случаях, если формат файла не совпадет с предполагаемым, возникнет ошибка.
Аналогично работает и метод SaveToFile с тем отличием, что примененный к Picture или к Picture.Graphic он сохраняет в файле изображение любого формата. Например, если вы дополните свое приложение диалогом SavePic-tureDialog, то сохранение изображения в файле можно организовать оператором
if SavePictureDialogl.Execute then
Imagel.Picture.SaveToFile(SavePictureDialogl.FileName);
В этом случае пользователь получит возможность сохранить изображение любого формата в файле с новым именем. Только при этом, чтобы не возникало в дальнейшем путаницы, расширение сохраняемого файла все-таки должно соответствовать формату сохраняемого изображения.
Абсолютно идентично для изображений любого формата будет работать программа, если оператор сохранения вы замените на
Imagel.Picture.Graphic.SaveToFile(SavePictureDialogl.FileName);
использующий свойство Picture.Graphic. А если вам известен формат хранимого в компоненте Image изображения, то вы можете применить метод SaveToFile к свойствам Picture.Bitmap, Picture.Icon, и Picture.Metafile.
Для всех рассмотренных объектов Picture, Picture.Bitmap, Picture.Icon, и Picture.Metafile определяют методы присваивания значений объектов Assign.
Однако для BitMap, Icon и Metafile присваивать можно только значения однородных объектов: соответственно битовых матриц, пиктограмм, метафайлов.
При попытке присвоения значениям разнородных объектов будет генерироваться исключение EConvertError. Объект Picture — является универсальным, ему можно присвоить значения объектов любых из остальных трех классов. А значение Picture можно присвоить только тому объекту, тип которого совпадет с типом объекта, хранящегося в нем.
Метод Assign можно использовать и для обмена изображениями с буфером Clipboard.
Например, оператор
Clipboard.Assign(Imagel.Picture);
занесет в буфер обмена изображение, хранящееся в Imagel. Аналогично оператор
Imagel.Picture.Assign(Clipboard);
прочитает в Imagel изображение, находящееся в буфере обмена. Причем это может быть любое изображение, и даже текст.
Надо только не забыть при работе с буфером обмена вставить в оператор uses вашего модуля ссылку на модуль
Clipbrd. Автоматически Delphi эту ссылку не вставляет.
Благодаря наличию канвы Canvas компонент Image широко используется не только для хранения готовых изображений, но и для построения различных графических редакторов.
Основные свойства
Св-во | Объявление / Описание |
AutoSize | property AutoSize: Boolean;
Указывает, изменяется ли автомататом размер компонента, подстраиваясь под размер изображения. |
Canvas | property Canvas: TCanvas:
Определяет поверхность (холст, канву) для рисования пером Реп и кистью Brush, |
Center | property Center: Boolean;
Указывает, должно ли изображение центрироваться в поле компонента, |
Incremen-talDisplay | property IncrementalDisplay: Boolean;
Указывает, должно ли изображение частично рисоваться во время медленных операций с большими |
Picture | property Picture: TPicture;
Определяет отображаемый графический объект типа TPicture. Может загружаться программно или во время |
Stretch | property Stretch: Boolean;
Указывает, должны ли изменяться размеры изображения, подгоняясь под размеры компонента. |
Transparent | property Transparent: Boolean;
Указывает, должен ли быть цвет фона изображения прозрачным, чтобы сквозь него было видно |
Основные методы
Никаких специальных методов в компоненте не объявлено. Компонет наследует множество методы от базового класса TControl.
Основные события
Событие | Описание |
OnProgress | События происходят при медленных процессах изменения графического изображения и позволяют построить индикатор хода процесса. |
Остальные события наследуются от класса TControl
. компонент image image Delphi bitmap это @gmail.com @mail.ru @yandex.ru image editor delphi 7 delphi 7 раюота с графическими файлами