Delen via


Color-Index-modus en Windows Palette Management

De kleurenindexmodus specificeert kleuren in een logisch palet met een index naar een specifieke vermelding in een logisch palet. De meeste GDI-programma's maken gebruik van kleurenindexpaletten, maar de RGBA-modus werkt beter voor OpenGL voor verschillende effecten, zoals arcering, verlichting, mist en patroontoewijzing. Als de meest echte kleur niet essentieel is voor uw OpenGL-toepassing, kunt u ervoor kiezen om de kleurindexmodus te gebruiken (bijvoorbeeld voor een topografische kaart die gebruikmaakt van 'valse kleur' om de kleurovergang te benadrukken).

Voorbeeld van Color-Index moduspalet

Met de volgende code wordt een PIXELFORMATDESCRIPTOR structuur ingesteld waarmee de vlag van het i PixelType lid wordt ingesteld op PFD_TYPE_COLORINDEX. Hiermee geeft u op dat de toepassing een kleurenindexpalet gebruikt.

BOOL bSetupPixelFormat(HDC hdc) 
{ 
    PIXELFORMATDESCRIPTOR pfd, *ppfd; 
    int pixelformat; 
 
    ppfd = &pfd; 
 
    ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR); 
    ppfd->nVersion = 1; 
    ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |  
                        PFD_DOUBLEBUFFER; 
    ppfd->dwLayerMask = PFD_MAIN_PLANE; 
 
    /* Set to color-index mode and use the default color palette. */ 
    ppfd->iPixelType = PFD_TYPE_COLORINDEX;  
 
    ppfd->cColorBits = 8; 
    ppfd->cDepthBits = 16; 
    ppfd->cAccumBits = 0; 
    ppfd->cStencilBits = 0; 
 
    pixelformat = ChoosePixelFormat(hdc, ppfd); 
 
    if ( (pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0 ) 
    { 
        MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK); 
        return FALSE; 
    } 
 
    if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE) 
    { 
        MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK); 
        return FALSE; 
    } 
 
    return TRUE; 
}