Битовая карта является одним из видов ресурсов. Естественно, что класс TBitmap поддерживает загрузку из ресурсов приложения:
procedure LoadFromResourcelD(Instance: THandle;
ResID: Integer);
procedure LoadFromResourceName(Instance: THandle;
const ResName: string);
Здесь instance - это глобальная переменная модуля System, хранящая уникальный идентификатор запущенной копии приложения (или динамической библиотеки).
Канва битовой карты доступна через свойство:
property Canvas: TCanvas;
С ее помощью можно рисовать на поверхности растрового изображения. Обратите внимание, что никакие другие потомки TGraphic канвы не имеют.
Дескрипторы битовой карты и ее палитры доступны как свойства:
property Handle: HBITMAP;
property Palette: HPÄLETTE;
Имея дело с классом TBitmap, учитывайте, что принцип "один объект - один дескриптор" из-за наличия механизма кэширования неверен. Два метода:
function ReleaseHandle: HBITMAP;
function ReleasePalette: HPÄLE1TE;
возвращают дескрипторы битовой карты и палитры соответственно, а после этого обнуляют дескрипторы, т. е. как бы "отдают" их пользователю.
При любом внешнем обращении к дескриптору битовой карты и любой попытке рисовать на ее канве разделение одной картинки несколькими объектами прерывается, и объект получает собственную копию содержимого дескриптора. Для этого есть методы:
П procedure Dormant - выгружает изображение в поток и уничтожает дескрипторы битовой карты и палитры;
□ procedure Free image - "освобождающий" дескриптор битовой карты для дальнейшего использования и внесения изменений. Это означает, что если на данный дескриптор есть ссылки, то он дублируется; поток очищается.
Битовая карта может быть монохромной и цветной, что определено свойством:
property Monochrome: Boolean;
Значение True соответствует монохромной битовой карте. При его изменении происходит преобразование содержимого к требуемому виду.
За прозрачность битовой карты отвечают следующие свойства:
property TransparentColor: TColor;
type ToTransparentMcde = (tmAuto, tmFixed) ;
property TransparentMcde: TTransparentMcde;
Если свойство TransparentMode установлено в режим trnAuto, то за прозрачный (фоновый) принимается цвет верхнего левого пиксела. В противном случае этот цвет берется из свойства TransparentColor.
Битовая карта может использоваться в качестве маски для других битовых карт. В этом случае она превращается в двухцветную, где в белый цвет окрашиваются точки фона (см. свойство Transparentcoior), а в черный - все остальные. Для поддержки этого режима служат следующие методы и свойства:
procédure Mask (TransparentColor : TColor) ;
prcperty MaskHandle: HBitmap;
function ReleaseMaskHandle : HBitirap;
Наконец, последним по счету будет рассмотрено очень важное свойство битовой карты TBitmap. Если формат ее хранения - DIB, то есть возможность получить доступ к данным самой битовой карты:
prcperty S canLine [Row: Triteger] : Pointer;
Это свойство представляет собой массив указателей на строки с данными битовой карты. Параметр Row содержит номер строки. Следует помнить, что в большинстве случаев строки в битовой карте упорядочены в памяти снизу вверх и фактически первой после заголовка хранится нижняя строка. Код, возвращающий значение свойства ScanLine, это учитывает; поэтому не удивляйтесь, если с ростом параметра Row значение свойства уменьшается.