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.