Compatible Device Contexts
To enable applications to place output in memory rather than sending it to an
actual device, the Win32 API provides a special device context for bitmap
operations called a
compatible device context. A compatible DC enables Windows to treat a portion of memory as a virtual
device. It is an array of bits in memory that an application can use temporarily
to store the color data for bitmaps created on a normal drawing surface.
An application creates a compatible DC by calling the
CreateCompatibleDC function and receives a handle that identifies a normal device context.
Windows creates a temporary one-bit placeholder for the array. Before performing
drawing operations using the compatible DC handle, the application must increase
the size of this array. To do this, the application can call the
CreateBitmap,
CreateBitmapIndirect, or
CreateCompatibleBitmap function to create a bitmap of the appropriate dimensions and then call the
SelectObject function to select the bitmap into the DC. After the bitmap is selected into
the compatible DC, Windows replaces the single-bit array with an array large
enough to store color information for the specified rectangle of pixels.
When an application passes the handle returned by
CreateCompatibleDC to one of the GDI drawing functions, the requested output does not appear on
a device's drawing surface. Instead, Windows stores the color information for
the resultant line, curve, text or region in the array of bits. The application
can copy the image stored in memory back onto a drawing surface by calling the
BitBlt function, identifying the compatible DC as the source device context and a
window or screen DC as the target device context.
When displaying a DIB or a DDB created from a DIB on a palette device, you can
improve the speed at which the image is drawn by arranging the logical palette
to match the layout of the system palette. To do this, call
GetDeviceCaps with the NUMRESERVED value to get the number of reserved colors in the
system. Then call
GetSystemPaletteEntries and fill in the first and last NUMRESERVED/2 entries of the logical palette
with the corresponding system colors. For example, if NUMRESERVED is 20, you
would fill in the first and last 10 entries of the logical palette with the system
colors. Then fill in the remaining 256
NUMRESERVED colors of the logical palette (in our example, the remaining 236
colors) with colors from the DIB and set the PC_NOCOLLAPSE flag on each of
these colors. For more information about color and palettes, see
Colors.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database