Combining Images with Regions
1. |
Add the following lines in one of your source code files (for example: IMPORTS.CPP). (Please note to change the path to the LEADTOOLS toolkit location on your system.) Under (WIN64) add the following line: #pragma comment(lib, "..\\..\\..\\Lib\\API\\x64\\Ltimgefx_x.lib") #pragma comment(lib, "..\\..\\..\\Lib\\API\\x64\\Ltdis_x.lib") #pragma comment(lib, "..\\..\\..\\Lib\\API\\x64\\Ltfil_x.lib") Under (WIN32) add the following line: #pragma comment(lib, "..\\..\\..\\Lib\\API\\Win32\\Ltimgefx_u.lib") #pragma comment(lib, "..\\..\\..\\Lib\\API\\Win32\\Ltdis_u.lib") #pragma comment(lib, "..\\..\\..\\Lib\\API\\Win32\\Ltfil_u.lib") |
2. |
Include the following header file: (Please note to change the path to the LEADTOOLS toolkit location on your system.) |
#include "../../../L_Bitmap.h"
3. |
Define the following global variables: |
HWND hWndClient; /* Handle of the 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 */
BITMAPHANDLE BitmapDst; /* Destination bitmap */
BITMAPHANDLE 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 */
4. |
Load two images as follows: |
L_LoadBitmap(TEXT("C:\\Program Files\\LEAD Technologies\\LEADTOOLS
15\\sample1.cmp"), &BitmapDst, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
L_LoadBitmap (TEXT("C:\\Program Files\\LEAD Technologies\\LEADTOOLS
15\\sample2.cmp"), &BitmapSrc, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
5. |
Get the client area of the current child window as follows: |
GetClientRect(hWndClient, &rClientArea);
6. |
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 = BITMAPWIDTH(&BitmapDst);
XForm.nXScalarDen = rClientArea.right;
XForm.nYScalarNum = BITMAPHEIGHT(&BitmapDst);
XForm.nYScalarDen = rClientArea.bottom;
XForm.nXOffset = 0;
XForm.nYOffset = 0;
7. |
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);
L_SetBitmapRgnRect(&BitmapDst, &XForm, &rRgnRect, L_RGN_SET);
8. |
Specify a position in the top left part of the displayed image and use the full size of the source bitmap as follows: |
XDst = BITMAPWIDTH(&BitmapDst) / 8;
YDst = BITMAPHEIGHT(&BitmapDst) / 8;
YSize = BITMAPHEIGHT(&BitmapSrc);
XSize = BITMAPWIDTH(&BitmapSrc);
XSrc = 0;
YSrc = 0;
9. |
Combine BitmapDst with &BitmapSrc, using flags for an ordinary paste, and save the results: |
L_CombineBitmap(&BitmapDst, XSize, YSize, XDst, YDst,
&BitmapSrc, XSrc, YSrc, CB_OP_ADD | CB_DST_0);
L_SaveBitmap(TEXT("C:\\Program Files\\LEAD Technologies\\LEADTOOLS
15\\Images\\test_region.bmp"), &BitmapDst, FILE_BMP, 0, 2, NULL);
10. |
At the end you should free the rectangle: |
L_FreeBitmapRgn(&BitmapDst);