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.
Use CBitmapContext::BitBlt() to blit a CFbsBitmap to the screen.
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);
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();
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 .
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License v1.0.