Функция GetObject извлекает информацию для заданного графического объекта.
Синтаксис
int GetObject( HGDIOBJ hgdiobj, // дескриптор графического объекта int cbBuffer, // размер буфера для информации об объекте LPVOID lpvObject // буфер с информацией об объекте ); |
Параметры
hgdiobj
[in] Дескриптор представляющего интерес графического объекта . Он может быть дескриптором одного из ниже перечисленных объектов: логический точечный рисунок, кисть, шрифт, палитра, перо, или независимый от устройства растр созданный при помощи вызова функции .cbBuffer
[in] Устанавливает число байтов информации, которая будет записана на буфер.lpvObject
[out] Указатель на буфер, который принимает информацию об заданном графическом объекте.Ниже следующее таблица показывает тип информации, которую буфер получает для каждого типа графического объекта, который Вы можете установить в параметре hgdiobj.
Тип объекта | Записываемые данные в буфер |
---|---|
HBITMAP | BITMAP |
HBITMAP возвращается при вызове функции CreateDIBSection | DIBSECTION, если параметр cbBuffer установлен в sizeof(DIBSECTION), или BITMAP, если параметр cbBuffer установлен в sizeof(BITMAP) |
HPALETTE | Тип WORD (СЛОВО) итоговое число записей в логической палитре |
HPEN возвращается при вызове функции ExtCreatePen | EXTLOGPEN |
HPEN | LOGPEN |
HBRUSH | LOGBRUSH |
HFONT | LOGFONT |
Если параметр lpvObject равен ПУСТО (NULL), функция возвращает значение равное числу байтов, необходимых, чтобы сохранить информацию, которую она запишет в буфер для заданного графического объекта.
Возвращаемые значения
Если функция завершается успешно, а параметр lpvObject - правильный указатель, возвращаемое значение - число байтов, сохраненных в буфере.
Если функция завершается успешно, а параметр lpvObject равен ПУСТО (NULL), возвращаемое значение - число(номер) байтов, необходимых, чтобы вместить информацию, которую функция должна сохранить в буфере.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль.
Windows NT/2000/XP: Чтобы получить дополнительные сведения об ошибке, вызовите GetLastError.
Замечания
Буфер, на который указывает параметр lpvObject должен быть достаточно большим, чтобы принять информацию о графическом объекте. В зависимости от графического объекта, функция использует структуру BITMAP , DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT или LOGPEN, или таблицы подсчета записей (для логической палитры).
Если hgdiobj - дескриптор точечного рисунка, созданного при помощи вызова CreateDIBSection, а заданный буфер является достаточно большим, функция GetObject возвращает структуру DIBSECTION. Кроме того, член bmBits структуры BITMAP, содержащейся внутри структуры DIBSECTION будет содержать указатель на разрядные значения точечного рисунка.
Если hgdiobj - дескриптор точечного рисунка, созданного любым другим способом, GetObject возвращает только информацию о ширине, высоте и формате цвета точечного рисунка. Вы можете получить битовые значения точечного рисунка при помощи вызова функция GetDIBits или GetBitmapBits.
Если hgdiobj - дескриптор логической палитры, GetObject извлекает 2-байтовое целое число, которое устанавливает число записей в палитре. Функция не извлекает структуру LOGPALETTE, определяющую палитру. Чтобы извлечь информацию о записях палитры, приложение может вызвать функцию GetPaletteEntries.
Если hgdiobj - дескриптор шрифта, структура LOGFONT, которая возвращается, является структурой LOGFONT, использованной для создания шрифта. Если Windows должен сделать некоторую интерполяцию шрифта, потому что точный LOGFONT не может быть представлен, интерполяция не будет отражена в LOGFONT. Например, если Вы просите вертикальную версию шрифта, который не поддерживает рисование по вертикали, LOGFONT указывает, что шрифт - вертикальный, но Windows будет рисовать его горизонтально.
Windows 95/98/Me: GetObjectW поддерживается программой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/Me.
Пример смотри в статье Сохранение изображения.
Обзор Контексты устройства, Функции, используемые контекстами устройства, CreateDIBSection, GetBitmapBits, GetDIBits, GetPaletteEntries, GetRegionData, BITMAP, DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT, LOGPALETTE, LOGPEN
Размещение и совместимость GetObject |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Gdi32.lib |
Заголовочный файл |
|
- объявлено в |
Wingdi.h |
- включено в |
Windows.h |
Unicode |
Реализуется как версии Unicode и ANSI для Windows 2000/XP. А также поддерживается программой Microsoft Layer for Unicode. |
Замечания по платформе |
Не имеется |