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

2.19.7. Параметры dib-изображений (tBitmap)

DibPalEntryCount - возвращает количество цветов в палитре, в зависимости от разрядности пикселя (только для форматов, имеющих палитру: pf1bit, pf4bit, pf8bit);

DibPalEntries[ i ] - доступ к цветам палитры по индексу, позволяет изменить палитру для DIB-изображений (форматов 1, 4 или 8 бит на пиксель);

DibPalNearestEntry( C ) - находит в палитре индекс цвета, максимально близкого к цвету, заданному параметром C;

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

DibSize - размер массива памяти для хранения пикселей;

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

В библиотеке KOL имеется ряд дополнительных функций для работы с битовыми изображениями. Например, следующий ряд функций позволяет загружать изображение из ресурсов, модифицируя его таким образом, чтобы его стандартные цвета автоматически подстраивались под текущие настройки системных цветов рабочего стола:

LoadMappedBitmap( Inst, ResID, Map ) - загружает изображение из ресурса (по числовому идентификатору ресурса), по пути замещая цвета в соответствии с теми, которые указаны в массиве Map. Возвращает дескриптор загруженного битового изображения типа hBitmap;

LoadMappedBitmapEx( MasterObj, Inst, ResName, Map ) - аналогично предыдущему, но загружает по имени ресурса и понимает любые форматы пикселей в ресурсах. Кроме того, если указан объект MasterObj, то он становится владельцем загруженного дескриптора, и при разрушении этого объекта, будет автоматически уничтожен и загруженный дескриптор;

CreateMappedBitmap( Inst, Bmp, Flags, ColorMap, i ) - выполняет замещение цветов для существующего битового изображения;

CreateMappedBitmapEx( Inst, ResName, Flags, ColorMap, i ) - то же, что и предыдущая функция, но изображение сначала загружается из ресурса по имени;

LoadBmp( Instance: Integer; Rsrc: PChar; MasterObj: PObj ) - загружает изображение из ресурса, добавляя его в список объектов для удаления вместе с объектом MasterObj;

2.20. Пиктограмма (tIcon)

Другой не менее важный графический объект - это пиктограмма (на компьютерном сленге - "иконка"). Пиктограммы в приложениях для среды Windows используются как значки для идентификации окон, для различения различных кнопок на панелях инструментов, и еще для неизмеримо большого количества целей. С пиктограммами можно работать и через API-функции, но во многих случаях удобно использовать для этого объект TIcon. Конструктор:

NewIcon - создает пустой объект TIcon и возвращает указатель на него типа PIcon;

Основные методы и свойства объекта пиктограммы:

Handle - дескриптор GDI пиктограммы. Для непустого объекта пиктограммы всегда не 0. Для того, чтобы присвоить объекту дескриптор типа hIcon или hCursor, его следует присвоить этому свойству;

ShareIcon - определяет, является дескриптор "разделяемым": разделяемый ресурс пиктограммы не считается принадлежащим объекту, и не уничтожается при разрушении объекта;

Empty - проверяет, что пиктограмма пуста (т.е. не загружена в объект, и дескриптор равен 0);

Clear - очищает объект (делает его пустым), при этом если имелся дескриптор, и он не был разделяемым (ShareIcon), то дескриптор уничтожается, освобождая соответствующий GDI-ресурс в системе;

Size - для квадратных пиктограмм, показывает их размер (высоту и ширину).

Д

о загрузки пиктограммы из внешних источников (файл, ресурс) этому значению можно присвоить ненулевое значение для того, чтобы при загрузке пиктограммы, имеющей несколько вариантов изображения, загружалось изображение именно указанного размера (по умолчанию всегда в первую очередь загружается пиктограмма 32х32, во вторую очередь – максимально близкая ей по размеру);

Width - ширина пиктограммы (для того, чтобы ширина и высота могли отличаться, в опции проекта следует включить символ условной компиляции ICON_DIFF_WH);

Height - высота пиктограммы (замечание о символе условной компиляции верно и для высоты);

HotSpot - координаты точки, которая служит для хранения "точки прикосновения" для курсоров (hCursor так же может храниться и управляться объектом TIcon, так как фактически они ничем больше и не отличаются);

Draw( DC, X, Y ) - рисует изображение пиктограммы на указанном контексте DC. Рисование прозрачной пиктограммы всегда выполняется "прозрачным" образом, т.е. области, соответствующие прозрачным областям, на целевой канве не затрагиваются;

StretchDraw( DC, R ) - рисует пиктограмму с масштабированием, вписывая ее в указанный прямоугольник;

LoadFromFile( s ) - загружает пиктограмму из файла;

LoadFromStream( strm ) - загружает пиктограмму из потока данных;

SaveToFile( s ) - сохраняет пиктограмму в указанном файле;

SaveToStream( strm ) - сохраняет пиктограмму в потоке данных;

LoadFromResourceID( inst, resID, sz ) - загружает пиктограмму из ресурса по числовому идентификатору ресурса;

LoadFromResourceName( inst, resName, sz ) - загружает пиктограмму из ресурса по имени ресурса;

LoadFromExecutable( s, i ) - загружает пиктограмму из указанного исполнимого файла (.exe, .dll, и т.п.), по номеру ресурса пиктограмм в этом файле (глобальная функция GetFileIconCount( s ) возвращает количество ресурсов пиктограмм в указанном исполнимом файле);

ConvertToBitmap - создает изображение hBitmap на основе пиктограммы и возвращает его;

Кроме того, имеется ряд глобальных функций, которые позволяют работать (загружать и сохранять) группы пиктограмм как одну пиктограмму с несколькими вариантами изображения:

SaveIcons2Stream( icons, strm ) - сохраняет указанные в массиве icons пиктограммы в указанный поток как одну пиктограмму с несколькими вариантами изображения. Массив пиктограмм должен содержать несколько пиктограмм различного размера;

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

И еще одна глобальная функция для загрузки пиктограммы:

LoadImgIcon( resName, sz ) - загружает пиктограмму из ресурса самого приложения по имени ресурса, максимально близкую к указанному размеру (если 0, то по умолчанию грузится пиктограмма 32х32);