diff -r 51a74ef9ed63 -r ae94777fff8f Symbian3/SDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita --- a/Symbian3/SDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita Wed Mar 31 11:11:55 2010 +0100 +++ b/Symbian3/SDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita Fri Jun 11 12:39:03 2010 +0100 @@ -1,37 +1,37 @@ - - - - - -Drawing Bitmaps

This topic provides example code that demonstrates blitting a bitmap to the screen, blitting a rectangular piece of a bitmap to the screen and blitting a bitmap under a mask.

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

Bitmap block transfer

Use CBitmapContext::BitBlt() to blit a CFbsBitmap to the screen.

// draw the bitmap using bitmap block transfer -TPoint pos(50,50); -gc.BitBlt(pos, bitmap);
Block transfer of a rectangular piece of a bitmap

You can blit a rectangular piece of a bitmap to the screen.

... -// set a rectangle for the top-left quadrant of the source bitmap -TSize bmpSizeInPixels=bitmap->SizeInPixels(); -TSize bmpPieceSize(bmpSizeInPixels.iWidth/2,bmpSizeInPixels.iHeight/2); -TRect bmpPieceRect(TPoint(0,0),bmpPieceSize); - -// blit only the piece of the bitmap indicated by bmpPieceRect -TPoint pos(100,100); -gc.BitBlt(pos, bitmap, bmpPieceRect);
Masked bitmap block transfer

Masks can be used to select which parts of a bitmap are drawn by CBitmapContext::BitBltMasked().

Masks can be used to not display pixels of the source bitmap if their corresponding mask pixel is black, or, alternatively, where the mask is white (called an inverted mask).

The following figure shows successively a source bitmap, a mask, and the outcome when they are blitted with BitBltMasked().

// Load the mask bitmap, just like any other -CFbsBitmap* maskBitmap = new (ELeave) CFbsBitmap(); -CleanupStack::PushL(maskBitmap); -User::LeaveIfError(maskBitmap-> - Load(multiBitmapFile,EMbmGrbmap2Smilmask)); - -// Calculate rectangle for the whole bitmap -TRect bmpPieceRect(TPoint(0,0),bitmap->SizeInPixels()); - -// Blit using a masking bitmap, with no inversion -gc.BitBltMasked(TPoint(50,50),bitmap,bmpPieceRect,maskBitmap,EFalse); - -... -// clean up -CleanupStack::PopAndDestroy(); + + + + + +Drawing Bitmaps

This topic provides example code that demonstrates blitting a bitmap to the screen, blitting a rectangular piece of a bitmap to the screen and blitting a bitmap under a mask.

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

Bitmap block transfer

Use CBitmapContext::BitBlt() to blit a CFbsBitmap to the screen.

// draw the bitmap using bitmap block transfer +TPoint pos(50,50); +gc.BitBlt(pos, bitmap);
Block transfer of a rectangular piece of a bitmap

You can blit a rectangular piece of a bitmap to the screen.

... +// set a rectangle for the top-left quadrant of the source bitmap +TSize bmpSizeInPixels=bitmap->SizeInPixels(); +TSize bmpPieceSize(bmpSizeInPixels.iWidth/2,bmpSizeInPixels.iHeight/2); +TRect bmpPieceRect(TPoint(0,0),bmpPieceSize); + +// blit only the piece of the bitmap indicated by bmpPieceRect +TPoint pos(100,100); +gc.BitBlt(pos, bitmap, bmpPieceRect);
Masked bitmap block transfer

Masks can be used to select which parts of a bitmap are drawn by CBitmapContext::BitBltMasked().

Masks can be used to not display pixels of the source bitmap if their corresponding mask pixel is black, or, alternatively, where the mask is white (called an inverted mask).

The following figure shows successively a source bitmap, a mask, and the outcome when they are blitted with BitBltMasked().

// Load the mask bitmap, just like any other +CFbsBitmap* maskBitmap = new (ELeave) CFbsBitmap(); +CleanupStack::PushL(maskBitmap); +User::LeaveIfError(maskBitmap-> + Load(multiBitmapFile,EMbmGrbmap2Smilmask)); + +// Calculate rectangle for the whole bitmap +TRect bmpPieceRect(TPoint(0,0),bitmap->SizeInPixels()); + +// Blit using a masking bitmap, with no inversion +gc.BitBltMasked(TPoint(50,50),bitmap,bmpPieceRect,maskBitmap,EFalse); + +... +// clean up +CleanupStack::PopAndDestroy();

Notes

  • Unlike with an ordinary BitBlit(), with BitBltMasked() you always have to specify what part of the bitmap to display: here we just set bmpPieceRect so that the whole bitmap is displayed.

  • If the mask bitmap is smaller than the source bitmap, then it is tiled across the bitmap.

  • For an inverted mask, set the last argument to BitBltMasked() to ETrue.

BitGDI Tutorials BitGDI Component
\ No newline at end of file