Color Fills

In order to fill all or part of a surface with a single color, you can use the IDirectDrawSurface5::Blt method with the DDBLT_COLORFILL flag. This technique allows you to quickly erase an area or draw a solid-colored background.

The following example fills an entire surface with the color blue, after obtaining the numerical value for blue from the pixel format.

/* It is assumed that lpDDS is a valid pointer to 
   an IDirectDrawSurface5 interface. */
 
HRESULT ddrval;
DDPIXELFORMAT ddpf;
 
ddpf.dwSize = sizeof(ddpf);
if (SUCCEEDED(lpDSS->GetPixelFormat(&ddpf))
{
    DDBLTFX ddbltfx; 
 
    ddbltfx.dwSize = sizeof(ddbltfx); 
    ddbltfx.dwFillColor = ddpf.dwBBitMask; // Pure blue
 
    ddrval = lpDDS->Blt( 
        NULL,        // Destination is entire surface
        NULL,        // No source surface
        NULL,        // No source rectangle
        DDBLT_COLORFILL, &ddbltfx); 
 
    switch(ddrval) 
    { 
        case DDERR_WASSTILLDRAWING: 
            . 
            . 
            . 
        case DDERR_SURFACELOST: 
            . 
            . 
            . 
        case DD_OK: 
            . 
            . 
            . 
        default: 
    } 
}

 Last updated on Thursday, April 08, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.