Битовая карта является одним из видов ресурсов. Естественно, что класс 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 значение свойства уменьшается.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс