Color Fills
A version of this page is also available for
4/8/2010
In order to fill all or part of a surface with a single color, you can use the IDirectDrawSurface::Blt method with the DDBLT_COLORFILL flag. This technique allows you to quickly erase an area or draw a solid-colored background.
Code Example
The following code example fills an entire surface with the color blue, after obtaining the numerical value for blue from the pixel format.
Note
To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.
/* It is assumed that lpDDS is a valid pointer to
an IDirectDrawSurface 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:
}
}