Поделиться через


Функция GetObject (wingdi.h)

Функция GetObject извлекает сведения для указанного графического объекта.

Синтаксис

int GetObject(
  [in]  HANDLE h,
  [in]  int    c,
  [out] LPVOID pv
);

Параметры

[in] h

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

[in] c

Количество байтов информации, записываемых в буфер.

[out] pv

Указатель на буфер, который получает сведения о указанном графическом объекте.

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

Тип объекта Данные, записанные в буфер
HBITMAP

ТОЧЕЧНЫЙ РИСУНОК

HBITMAP, возвращенный из вызова CreateDIBSection

DIBSECTION, если для cbBuffer задано sizeof (DIBSECTION) значение BITMAP, если для cbBuffer задано значение sizeof (BITMAP).

HPALETTE
Число записей в логической палитре WORD
HPEN вернулся из вызова ExtCreatePen

EXTLOGPEN

HPEN

LOGPEN

HBRUSH

LOGBRUSH

HFONT

LOGFONT

 

Если параметр lpvObject имеет значение NULL, возвращаемое значение функции — это количество байтов, необходимых для хранения сведений, записываемых в буфер для указанного графического объекта.

Адрес lpvObject должен находиться на 4-байтовой границе; в противном случае GetObject завершается ошибкой.

Возвращаемое значение

Если функция выполнена успешно, и lpvObject является допустимым указателем, возвращаемое значение — это количество байтов, хранящихся в буфере.

Если функция выполнена успешно, и lpvObject имеет значение NULL, возвращаемое значение — это количество байтов, необходимых для хранения сведений, которые функция будет хранить в буфере.

Если функция завершается ошибкой, возвращаемое значение равно нулю.

Замечания

Буфер, на который указывает параметр 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, используемый для создания шрифта. Если Windows пришлось выполнить интерполяцию шрифта, так как не удалось представить точный logFONT , интерполяция не будет отражена в LOGFONT. Например, если вы запрашиваете вертикальную версию шрифта, который не поддерживает вертикальное рисование, LOGFONT указывает, что шрифт является вертикальным, но Windows будет рисовать его горизонтально.

Примеры

Пример см. в разделе "Хранение изображения".

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
Header wingdi.h (включая Windows.h)
Library Gdi32.lib
DLL Gdi32.dll

См. также

ТОЧЕЧНЫЙ РИСУНОК

CreateDIBSection

DIBSECTION

Функции контекста устройства

Обзор контекстов устройств

EXTLOGPEN

GetBitmapBits

GetDIBits

GetPaletteEntries

GetRegionData

LOGBRUSH

LOGFONT

LOGPALETTE

LOGPEN