The bitmap blitting functions of the bitmapped graphics context
(CBitmapContext
) cannot be used to perform scaling of the bitmap,
but always draws the bitmap using its dimensions in pixels. The overloaded GDI
CGraphicsContext::DrawBitmap()
function, however, can be used to
draw a bitmap:
stretched or compressed to a set size in twips
stretched and/or compressed to fit a given rectangle
Note that DrawBitmap()
is slower than
BitBlt()
, so BitBlt()
should be used in preference
wherever possible.
A bitmap can have a real world size in twips set for it, and be drawn scaled that size.
Construct a TSize
with the required dimensions in
twips.
Set the size of the bitmap using
CFbsBitmap::SetSizeInTwips()
. The default size in twips of a
bitmap when loaded is (0,0)
.
Draw the bitmap using DrawBitmap()
The example assumes bitmap
is a pointer to a valid
CFbsBitmap
.
// Set twips size
TSize bmpSizeInTwips(2000,2000);
bitmap->SetSizeInTwips(bmpSizeInTwips);
gc.DrawBitmap(TPoint(50,50), bitmap);
DrawBitmap()
can also draw a bitmap by stretching it to
fit a given rectangle.
The example assumes bitmap
is a pointer to a valid
CFbsBitmap
.
// Draw bitmap stretched from the origin to 100,100
TRect rect(0,0,100,100);
gc.DrawBitmap(rect, bitmap);