Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

2.19.1. Дескриптор и формат пикселей (tBitmap)

HandleType - тип растрового изображения (bmDDB или bmDIB, в зависимости от того, является изображение зависимым от устройства или независимым);

PixelFormat - формат пикселей (используется для HandleType = bmDIB, для типа bmDDB хранит специальное значение pfDevice);

BitsPerPixel - вычисляет число бит, требуемых для представления одного пикселя (в том числе, для изображений, зависящих от устройства);

Handle - дескриптор системного графического объекта типа hBitmap. Независимые от устройства изображения не нуждаются в наличии такого дескриптора, и вообще всю работу потенциально могут выполнять без выделения такого дескриптора. Однако, если идет работа с изображением через канву, дескриптор для изображения создается автоматически. Допускается присваивать этому свойству в качестве значения дескриптор битового изображения (типа hBitmap), полученный любым способом, в том числе из API-функций - при этом прежнее изображение теряется и замещается присвоенным, а объект становится "владельцем" присвоенного дескриптора (т.е. дескриптор будет автоматически разрушаться вместе с объектом в его деструкторе);

HandleAllocated - проверяет, выделен ли дескриптор (Handle);

ReleaseHandle - отделяет дескриптор от изображения, освобождая его (независимое от устройства изображение продолжает при этом существовать в памяти, и при необходимости выполнения каких-либо операций, требующих наличия дескриптора, тот будет выделен снова). Отделенный в результате такой операции дескриптор освобождается в том смысле, что с этого момента он не известен (и не интересен) объекту TBitmap. И тогда уже вызывающий код отвечает за его дальнейшую судьбу. Например, он может быть удален API-функцией DeleteObject, или использован каким-либо еще способом. Важно лишь обеспечить отсутствие утечек таких ресурсов: все выделенные ресурсы GDI, к которым относится и hBitmap, должны быть обязательно удалены, когда надобность в них отпадает;

Dormant - отсоединяет дескриптор от изображения, и уничтожает его (что эквивалентен вызову DeleteObject( ReleaseHandle ) ), а так же освобождает канву объекта (RemoveCanvas). Применение этого метода рекомендуется для предотвращения одновременного выделения в приложении слишком большого количества GDI-ресурсов, если требуется работать попеременно с большим количеством растровых изображений в памяти;

Assign( srcBmp ) - присваивает данному изображению указанное, копируя его физически (в отличие от VCL, где копирование откладывается до изменения содержимого одного из изображений);

2.19.2. Размеры (tBitmap)

Width - ширина в пикселях (должна быть больше нуля, иначе изображение считается пустым);

Height - высота в пикселях (аналогично Width, должна быть больше нуля);

Ширину и высоту изображения для объекта TBitmap можно изменять динамически, при этом прежнее изображение сохраняется (копируется из старого), при увеличении размеров новое пространство закрашивается цветом, который установлен для кисти его канвы, а при уменьшении изображения оно обрезается до нового размера;

BoundsRect - возвращает прямоугольник с координатами ( 0, 0, Width, Height ). Эту функцию удобно использовать для передачи параметров в те методы, где требуется именно прямоугольник: очевидно, запись вида

Bmp.Canvas.FillRect( Bmp.BoundsRect );

и короче, и яснее, чем эквивалентная ей конструкция

Bmp.Canvas.FillRect( MakeRect( 0, 0, Bmp.Width, Bmp.Height ) );

Empty - проверяет, является ли изображение пустым (изображение пустое, если его ширина или высота равна нулю);

Clear - делает изображение пустым, освобождая занятые изображением ресурсы;