Кроме того, на уровне TPicture определены возможности регистрации и использования других - определенных пользователем - классов графических объектов, порожденных от TGraphic. Доступ к графическому объекту осуществляется посредством свойства:
property Graphic: TGraphic;
Если графический объект имеет один из трех предопределенных типов, то к нему можно обратиться и как к одному из свойств:
property Bitmap: TBitmap;
property Icon: TIcon;
property Metafile: TMetafile;
Обращаясь к этим функциям, нужно быть осторожным. Если в поле Graphic хранился объект одного класса, а затребован объект другого класса, то прежний объект уничтожается, а вместо него создается пустой объект требуемого класса. Например:
Imagel.Picture.LoadFromFile('myicon.ico'); //Создан и загружен объект класса TIcon
MyBitmap := Imagel.Picture.Bitmap; // прежний TIcon уничтожается
Если же вы описали свой класс (допустим, TGiFimage), то к его методам и свойствам следует обращаться так:
(Graphic as TGiFimage) .MyProperty := MyValue;
Перечислим остальные методы и свойства.
CJ procedure LoadFromFile (const Filename: string);
Анализирует расширение имени файла FileName и если оно известно (зарегистрировано), то создается объект нужного класса и вызывается его метод LoadFromFile. В противном случае возникает исключительная ситуация EinvaiidGraphic. Стандартными расширениями являются ico, wmf
(emf) и bmp. Если подключить к приложению модуль JPEG.PAS, то можно будет загрузить и файлы с расширениями jpg и jpeg.
D procedure SaveToFile(const Filename: string);
Сохраняет графику в файле, вызывая соответствующий метод объекта Graphic.
□ procedure LoadFromClipboardFormat(AFormat : Word;
APata: THandle;
APalette: HPALETTE);
Во многом аналогичен методу LoadFromFile. Если формат AFormat найден среди зарегистрированных, то AData и APalette передаются для загрузки методу соответствующего объекта. Изначально зарегистрированных форматов три: битовое изображение cf_bitmap, метафайлы
cfjmetafilepict И cf_enhmetafile.
□ procedure SaveToClipboardFormat (var AFormat: Word;
var AData: THandle;
var APalette: HPALETTE);
Сохраняет графику в буфере обмена, вызывая метод объекта Graphic.
□ procedure Assign (Source: TPersistent);
Метод Assign переписан таким образом, чтобы присваиваемый объект мог принадлежать как классу TPicture, так и TGraphic или любого его потомка. Кроме того, он может быть равен nil - в этом случае поле Graphic очищается с удалением прежнего объекта.
□ class function SupportsClipboardFormat(AFormat : Word) : Boolean;
Метод класса возвращает значение True, если формат AFormat поддерживается классом TPicture (зарегистрирован в системе). Напомним, что методы класса можно вызывать через ссылку на класс без создания экземпляра объекта.
□ class procedure RegisterFileFormat (const ÄExtension, ÄDescription:
string;
AGraphicClass: TGraphicClass);
class procedure RegisterClipboardFormao (AFormat : Word;
AGraphicClass: TGraphicClass);
Предназначены для создателей новых графических классов. Они позволяют зарегистрировать формат файла и буфера обмена и связать их с созданным классом - потомком TGraphic, который умеет читать и записывать информацию в этом формате.