Drawing Reduced and Enlarged Bitmaps

This topic provides examples of using CGraphicsContext::DrawBitmap() to draw a bitmap that is stretched or compressed.

The bitmap blitting functions of the bitmapped graphics context ( CBitmapContext ) cannot be used to perform scaling of the bitmap. They always draws the bitmap using its dimensions in pixels. The overloaded GDI CGraphicsContext::DrawBitmap() function, however, can be used to draw a bitmap that is:

  • stretched or compressed to a set size in twips

  • stretched and/or compressed to fit a given rectangle.

Note : DrawBitmap() is slower than BitBlt() . You should therefore use BitBlt() in preference wherever possible.

These examples assume that bitmap is a pointer to a valid CFbsBitmap object.

Draw a bitmap at a set size in twips

A bitmap can have a real world size in twips set for it, and be drawn scaled to that size.

  1. Construct a TSize with the required dimensions in twips.

  2. Set the size of the bitmap using CFbsBitmap::SetSizeInTwips() . The default size in twips of a bitmap when loaded is (0,0) .

  3. Draw the bitmap using DrawBitmap()

       
        
       
       // Set twips size 
TSize bmpSizeInTwips(2000,2000);
bitmap->SetSizeInTwips(bmpSizeInTwips);
gc.DrawBitmap(TPoint(50,50), bitmap);
      

Draw a bitmap in a given rectangle

DrawBitmap() can also draw a bitmap by stretching it to fit a given rectangle.

       
        
       
       // Draw bitmap stretched from the origin to 100,100
TRect rect(0,0,100,100);
gc.DrawBitmap(rect, bitmap);