Bagikan melalui


Fungsi ChoosePixelFormat (wingdi.h)

Fungsi ChoosePixelFormat mencoba mencocokkan format piksel yang sesuai yang didukung oleh konteks perangkat dengan spesifikasi format piksel tertentu.

Sintaks

int ChoosePixelFormat(
  HDC                         hdc,
  const PIXELFORMATDESCRIPTOR *ppfd
);

Parameter

hdc

Menentukan konteks perangkat yang diperiksa fungsi untuk menentukan kecocokan terbaik untuk deskriptor format piksel yang ditunjukkan oleh ppfd.

ppfd

Penunjuk ke struktur PIXELFORMATDESCRIPTOR yang menentukan format piksel yang diminta. Dalam konteks ini, anggota struktur PIXELFORMATDESCRIPTOR yang menunjuk PPFD digunakan sebagai berikut:

nSize Menentukan ukuran struktur data PIXELFORMATDESCRIPTOR . Atur anggota ini ke sizeof(PIXELFORMATDESCRIPTOR).
nVersion Menentukan nomor versi struktur data PIXELFORMATDESCRIPTOR . Atur anggota ini ke 1.
dwFlags Sekumpulan bendera bit yang menentukan properti buffer piksel. Anda dapat menggabungkan konstanta bendera bit berikut dengan menggunakan bitwise-OR. Jika salah satu bendera berikut diatur, fungsi ChoosePixelFormat mencoba mencocokkan format piksel yang juga memiliki bendera atau bendera yang ditetapkan. Jika tidak, ChoosePixelFormat mengabaikan bendera tersebut dalam format piksel: PFD_DRAW_TO_WINDOW, PFD_DRAW_TO_BITMAP, PFD_SUPPORT_GDI, PFD_SUPPORT_OPENGL Jika salah satu bendera berikut diatur, PilihPixelFormat mencoba mencocokkan format piksel yang juga memiliki bendera atau bendera yang ditetapkan. Jika tidak, ia mencoba mencocokkan format piksel tanpa set bendera tersebut: PFD_DOUBLEBUFFER PFD_STEREO Jika bendera berikut diatur, fungsi mengabaikan bendera PFD_DOUBLEBUFFER dalam format piksel: PFD_DOUBLEBUFFER_DONTCARE Jika bendera berikut diatur, fungsi mengabaikan bendera PFD_STEREO dalam format piksel: PFD_STEREO_DONTCARE
iPixelType Menentukan jenis format piksel untuk dipertimbangkan fungsi: PFD_TYPE_RGBA, PFD_TYPE_COLORINDEX
cColorBits Nol atau lebih besar.
cRedBits Tidak digunakan.
cRedShift Tidak digunakan.
cGreenBits Tidak digunakan.
cGreenShift Tidak digunakan.
cBlueBits Tidak digunakan.
cBlueShift Tidak digunakan.
cAlphaBits Nol atau lebih besar.
cAlphaShift Tidak digunakan.
cAccumBits Nol atau lebih besar.
cAccumRedBits Tidak digunakan.
cAccumGreenBits Tidak digunakan.
cAccumBlueBits Tidak digunakan.
cAccumAlphaBits Tidak digunakan.
cDepthBits Nol atau lebih besar.
cStencilBits Nol atau lebih besar.
cAuxBuffers Nol atau lebih besar.
iLayerType Menentukan salah satu nilai jenis lapisan berikut: PFD_MAIN_PLANE, PFD_OVERLAY_PLANE, PFD_UNDERLAY_PLANE
bReserved Tidak digunakan.
dwLayerMask Tidak digunakan.
dwVisibleMask Tidak digunakan.
dwDamageMask Tidak digunakan.
 

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah indeks format piksel (berbasis satu) yang paling cocok dengan deskriptor format piksel yang diberikan.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Anda harus memastikan bahwa format piksel yang cocok dengan fungsi ChoosePixelFormat memenuhi kebutuhan Anda. Misalnya, jika Anda meminta format piksel dengan buffer warna RGB 24-bit tetapi konteks perangkat hanya menawarkan buffer warna RGB 8-bit, fungsi mengembalikan format piksel dengan buffer warna RGB 8-bit.

Contoh

Contoh kode berikut menunjukkan cara menggunakan ChoosePixelFormat untuk mencocokkan format piksel tertentu.

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; 
 
iPixelFormat = ChoosePixelFormat(hdc, &pfd);

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header wingdi.h
Pustaka Gdi32.lib
DLL Gdi32.dll

Lihat juga

DescribePixelFormat

GetPixelFormat

OpenGL di Windows

SetPixelFormat

Fungsi Windows