Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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:
}
}
Send Feedback on this topic to the authors