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


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

Функция SetPixelFormat задает формат пикселей указанного контекста устройства в формат, заданный индексом iPixelFormat .

Синтаксис

BOOL SetPixelFormat(
  HDC                         hdc,
  int                         format,
  const PIXELFORMATDESCRIPTOR *ppfd
);

Параметры

hdc

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

format

Индекс, определяющий задается формат пикселей. Различные форматы пикселей, поддерживаемые контекстом устройства, определяются с помощью одноуровневых индексов.

ppfd

Указатель на структуру PIXELFORMATDESCRIPTOR , содержащую спецификацию формата логического пикселя. Компонент метафайла системы использует эту структуру для записи спецификации формата логических пикселей. Структура не оказывает другого влияния на поведение функции SetPixelFormat .

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

Если функция выполнена успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если hdc ссылается на окно, вызов функции SetPixelFormat также изменяет формат пикселей окна. Установка формата пикселей для окна несколько раз может привести к значительным осложнениям в Диспетчере окон и многопоточных приложениях, поэтому это не допускается. Приложение может задать формат пикселей окна только один раз. После установки формата пикселей окна его нельзя изменить.

Перед вызовом функции wglCreateContext необходимо выбрать формат пикселей в контексте устройства. Функция wglCreateContext создает контекст отрисовки для рисования на устройстве в выбранном пиксельном формате контекста устройства.

Окно OpenGL имеет собственный формат пикселей. Из-за этого в окне разрешено рисовать только контексты устройств, полученные для клиентской области окна OpenGL. В результате должно быть создано окно OpenGL со стилями WS_CLIPCHILDREN и WS_CLIPSIBLINGS. Кроме того, атрибут класса окна не должен содержать стиль CS_PARENTDC.

Примеры

В следующем примере кода показано использование SetPixelFormat .

PIXELFORMATDESCRIPTOR pfd = { 
    sizeof(PIXELFORMATDESCRIPTOR),   // size of this pfd  
    1,                     // version number  
    PFD_DRAW_TO_WINDOW |   // support window  
    PFD_SUPPORT_OPENGL |   // support OpenGL  
    PFD_DOUBLEBUFFER,      // double buffered  
    PFD_TYPE_RGBA,         // RGBA type  
    24,                    // 24-bit color depth  
    0, 0, 0, 0, 0, 0,      // color bits ignored  
    0,                     // no alpha buffer  
    0,                     // shift bit ignored  
    0,                     // no accumulation buffer  
    0, 0, 0, 0,            // accum bits ignored  
    32,                    // 32-bit z-buffer  
    0,                     // no stencil buffer  
    0,                     // no auxiliary buffer  
    PFD_MAIN_PLANE,        // main layer  
    0,                     // reserved  
    0, 0, 0                // layer masks ignored  
}; 
HDC  hdc; 
int  iPixelFormat; 
 
// get the best available match of pixel format for the device context   
iPixelFormat = ChoosePixelFormat(hdc, &pfd); 
 
// make that the pixel format of the device context  
SetPixelFormat(hdc, iPixelFormat, &pfd);

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

ChoosePixelFormat

DescribePixelFormat

GetPixelFormat

OpenGL в Windows

Функции Windows