DirectX SDK |
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: } }
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.