Независимый от устройства битовый массив DIB не имеет описателя GDI как обычный битовый массив, хотя имеет глобальный описатель. Это просто структура, содержащая информацию о палитре и набор бит (элементов изображения). Класс TDib дает удобный способ
работы с DIB, аналогичный методам работы с другим объектами GDI.
Память для DIB выделяется одним фрагментом (с помощью функции
Windows GlobalAlloc), так что ее можно передать в буфер обмена,
OLE-серверу или клиенту.
Построить объект TDib вы можете прямо или косвенно. При непосредственном построении вы можете задать высоту, ширину битового массива и т.д. При косвенном построении вы можете задать существующий объект битового массива, указатель на структуру BITMAP, метафайл, контекст устройства TDC, буфера обмена и т.д.
Если ShouldDelete возвращает True, ~TDib освобождает ресурс
и используемую глобальную память.
Для доступа к инкапсулированному DIB TDib предусматривает
различные функции-элементы. Функции преобразования типов в TDib
позволяют вам обращаться к TDib наиболее удобным для конкретной
операции способом. Для доступа к TDib через HANDLE можно использовать операцию преобразования HANDLE. Вы можете также преобразовать объект TDib в три других типа битовых массивов. Для этого
используются операции BITMAPINFO, BITMAPINFOHEADER и TRgbQuad.
Для доступа к внутренним структурам DIB используются специальные функции с такими же именами BITMAPINFO, BITMAPINFOHEADER и
TRgbQuad. Функция GetIndices возвращает указатель на массив, содержащий биты фактического образа DIB.
Поместить объект DIB в буфер обмена Clipboard можно с помощью функции ToClipboard, в качестве единственного параметра которой задается ссылка на объект TClipboard. Так как эта функция
фактически удаляет объект из приложения, нужно использовать конструктор TDib для создания временного объекта.
Класс TDib предусматривает ряд функций доступа, которые можно использовать для опроса объекта TDib и получения информации о
содержащемся в объекте DIB.
Чтобы определить допустимость объекта, вызовите функцию
GetColor | Получает любую запись в палитре цветов DIB по индексу в таблице цветов. Возвращается объект TColor. |
SetColor | Изменяет запись в таблице цветов DIB. В параметрах указываются индекс в таблице цветов и новое значение. |
FindColor | Сравнивает объект TColor с записью в таблице цветов, используя функцию FindColor. В пара- метре задается объект TColor. |
MapColor | Заменяет цвет в существующей таблице цветов. Имеет 3 параметр: TColor, содержащий заменяемый цвет, TColor c новым цветом, и значение, указывающее, нужно ли заменить все вхождения. |
GetIndex | Позволяет получить индекс палитры любой для любой таблицы цветов. Параметр задает индекс в таблице цветов. Возвращается значение индекса палитры. |
FindIndex | Находит индекс палитры по записи таблицы цветов. Выполняет поиск по таблицам цветов DIB. пока не найдет заданное в параметре значение. |
MapIndex | Заменяет цвет на цвет, уже существующий в таблице цветов DIB. В параметрах задаются индекс для замены, новый индекс палитры, помещаемый в таблицу цветов, и значение, определяющее, нужно ли заменить все вхождения. |