DirectX SDK

Color Fills

[C++]

In order to fill all or part of a surface with a single color, you can use the IDirectDrawSurface7::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 IDirectDrawSurface7 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: 
    } 
}
[Visual Basic]

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