Класс TPicture
Это класс-надстройка над TGraphic, точнее – над его потомками. Он имеет поле Graphic, которое может содержать объекты классов TBitmap, Ticon, TMetafile и TJPEGimage. Предназначение класса TPicture – управлять вызовами соответствующих методов, скрывая при этом хлопоты с определением типа графического объекта и детали его реализации.
Кроме того, на уровне 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;
Перечислим остальные методы и свойства.
procedure LoadFromFile(const Filename: string);
Анализирует расширение имени файла FileName и если оно известно (зарегистрировано), то создается объект нужного класса и вызывается его метод LoadFromFile. В противном случае возникает исключительная ситуация EinvalidGraphic. Стандартными расширениями являются .ico, .wmf (.emf) и .bmp. Если подключить к приложению модуль JPEG.PAS, то можно будет загрузить и файлы с расширениями .jpg и .jpeg.
procedure SaveToFile(const Filename: string);
Сохраняет графику в файле, вызывая соответствующий метод объекта Graphic.
procedure LoadFromClipboardFormat(AFormat: Word; AData: THandle; APalette: HPALETTE);
Во многом аналогичен методу LoadFromFile. Если формат AFormat найден среди зарегистрированных, то AData и APalette передаются для загрузки методу соответствующего объекта. Изначально зарегистрированных форматов три: битовое изображение CF_BITMAP, метафайлы CF_METAFILEPICT и CF_ENHMETAFILE.