|
||||||||
|
Класс TPicture
TPicture = class(TPersistent) Класс-надстройка над TGraphic, точнее ? над его потомками. Он содержит поле Graphic, которое может содержать TBitmap, TIcon и TMetafile. Предназначение TPicture ? управлять вызовами соответствующих методов, сурывая при этом хлопоты с определением типа и детали их реализации. Кроме того, на уровне TPicture определены возможности по регистрации и использованию других ? определенных пользователем ? классов графических объектов, порожденных от TGraphic. Доступ к графическому объекту осуществляется посредством свойства:
Если графический объект имеет один из трех предопределенных типов, то к нему можно обратиться и как к одному из свойств:
Если в поле Graphic хранился объект одного класса, а затребован ? другого, то прежний объект уничтожается, а вместо него создается пустой объект нужного класса. Если же вы описали свой класс (допустим, TDIB), то к его методам и свойствам следует обращаться так:
Перечислим остальные методы и свойства:
Все три разновидности графических объектов имеют свои системы кэширования. Это означает, что на один реально существующий в системе (и занимающий долю ресурсов!) дескриптор могут одновременно ссылаться несколько объектов. Реализуется такое связывание через метод Assign. Выражение
означает, что два этих объекта разделяют теперь один значок. Более простым является кэширование для TIcon и TMetafile, которые умеют только отображать себя и не предназначены для редактирования (создатели Delphi считают, что дескриптор графического объекта дается программисту не для того, чтобы ковыряться в нем на уровне двоичных кодов). Гораздо сложнее устроен механизм кэширования для TBitmap, который имеет свою канву для рисования. Внутреннее представление информации в графических объектах двоякое ? она может храниться как поток типа TMemoryStream (в него загружается содержимое соответствующего файла), как область памяти с дескриптором (структура которой зависит от типа графического объекта) и одновременно в двух этих видах, содержимое которых автоматически синхронизируется. Поэтому будьте готовы к тому, что загрузка изображения потребует вдвое большего объема памяти ? особенно это актуально для больших картинок. Кого-то может удивить отсутствие объявленных методов рисования вроде Draw у TIcon, TMetafile и TBitmap. Такие методы есть, но они недоступны. Все рисование должно осуществляться через вызовы методов Draw и StretchDraw канвы, содержащей графику, ибо канва несет тот контекст, в котором должна осуществляться операция. Рассмотрим предопределенные графические классы.
Для комментария : kadan@grsu.grodno.by | |||||||||||||||||||||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |