Combining Images with Regions
| 1. | Define the following global variables: | 
CWnd WndClient; /* current child window */
RGNXFORM XForm; /* Structure for transforming display coordinates */
RECT rClientArea; /* Client area of the current window */
RECT rRgnRect; /* Rectangle that defines the region */
LBitmapBase BitmapDst; /* Destination bitmap */
LBitmapBase BitmapSrc; /* Source bitmap */
L_INT XDst; /* Column offset of the destination */
L_INT YDst; /* Row offset of the destination */
L_INT XSize;/* Pixel width of the rectangle to combine */
L_INT YSize;/* Pixel height of the rectangle to combine */
L_INT XSrc; /* Column offset of the source */
L_INT YSrc; /* Column offset of the source */
| 2. | Load two images as follows: | 
BitmapDst.Load(TEXT("c:\\sample1.cmp"), 0, ORDER_BGR, NULL, NULL);
BitmapSrc.Load(TEXT("C:\\sample2.cmp"), 0, ORDER_BGR, NULL, NULL);
| 3. | Get the client area of the current child window as follows: | 
WndClient.GetClientRect(&rClientArea);
| 4. | Set RGNXFORM fields, assuming that the display rectangle is the same as the client area of the current child window as follows: | 
XForm.uViewPerspective = TOP_LEFT;
XForm.nXScalarNum = BitmapDst.GetWidth();
XForm.nXScalarDen = rClientArea.right;
XForm.nYScalarNum = BitmapDst.GetHeight();
XForm.nYScalarDen = rClientArea.bottom;
XForm.nXOffset = 0;
XForm.nYOffset = 0;
| 5. | Specify a rectangle to define the region and then create a rectangular region as follows: | 
SetRect(&rRgnRect, rClientArea.right/8, rClientArea.bottom/8, rClientArea.right/2, rClientArea.bottom/2);
LBitmapRgn bmpRegion(&BitmapDst);
bmpRegion.SetRgnRect(&rRgnRect);
bmpRegion.SetRgnXForm(&XForm);
| 6. | Specify a position in the top left part of the displayed image and use the full size of the source bitmap as follows: | 
XDst = BitmapDst.GetWidth() / 8;
YDst = BitmapDst.GetHeight() / 8;
YSize = BitmapSrc.GetHeight();
XSize = BitmapSrc.GetWidth();
XSrc = 0;
YSrc = 0;
| 7. | Combine BitmapDst with BitmapSrc, using flags for an ordinary paste: | 
BitmapDst.Combine(&BitmapSrc, XDst, YDst, XSize, YSize, XSrc, YSrc, CB_OP_ADD | CB_DST_0);
| 8. | At the end you should free the rectangle: | 
bmpRegion.Free();