#include "LtPnt.h"
L_LTPNT_API L_INT L_PntSetTransformation(pPaint, pXForm)
pPAINTHANDLE pPaint; |
pointer to a paint handle |
pPAINTXFORM pXForm; |
pointer to a structure |
Sets the transformation information for the toolkit.
Parameter |
Description |
pPaint |
Pointer to a paint handle. |
pXForm |
Pointer to a PAINTXFORM structure that contains transform values used to transform input coordinates. If this parameter is NULL, the zoom will default to 100 and the offset values will default to 0. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
The toolkit will transform all input and output coordinates, using the values set by this function, unless otherwise stated.
Required DLLs and Libraries
LTPNT For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application |
Functions: |
L_PntGetTransformation, L_PntGetDCExtents, L_PntSetDCExtents, L_PntSetMetrics |
Topics: |
|
|
L_INT PntSetTransformationExample(HWND hWnd,
pBITMAPHANDLE pBitmap,
L_INT *g_nZoomFactor,
L_INT *g_nHScroll, /* current scroll bar horzontal value */
L_INT *g_nVScroll /* current scroll bar vertical value */)
{
L_INT nRet;
pPAINTHANDLE pPaint ;
HDC hDC;
RECT rcView ;
L_INT nXOffset, nYOffset ;
RECT rcShapeRect ;
PAINTXFORM PntXForm ;
/* Initiate the Paint toolkit */
nRet = L_PntInit ( &pPaint );
if ( SUCCESS != nRet )
{
return nRet;
}
/* set the painting rectangel */
SetRect ( &rcView, 0, 0, BITMAPWIDTH ( pBitmap ), BITMAPHEIGHT ( pBitmap ) ) ;
if ( *g_nZoomFactor < 100 )
{
nXOffset = - MulDiv ( *g_nHScroll, 100, *g_nZoomFactor ) ;
nYOffset = - MulDiv ( *g_nVScroll, 100, *g_nZoomFactor ) ;
}
else
{
nXOffset = - *g_nHScroll ;
nYOffset = - *g_nVScroll ;
}
OffsetRect ( &rcView, nXOffset, nYOffset ) ;
rcView.left = MulDiv ( rcView.left, *g_nZoomFactor, 100 ) ;
rcView.top = MulDiv ( rcView.top, *g_nZoomFactor, 100 ) ;
rcView.right = MulDiv ( rcView.right, *g_nZoomFactor, 100 ) ;
rcView.bottom = MulDiv ( rcView.bottom, *g_nZoomFactor, 100 ) ;
// set the paintin transformatoins values.
PntXForm.nZoom = *g_nZoomFactor ;
PntXForm.nXOffset = - rcView.left ;
PntXForm.nYOffset = - rcView.top ;
/* Set the painting transformations to reflect a zoom-in by 5:1 */
nRet = L_PntSetTransformation ( pPaint, &PntXForm ) ;
if(nRet != SUCCESS)
return nRet;
/* Get the device context */
hDC = GetDC ( hWnd ) ;
/* paint the bitmap */
nRet = L_PaintDC( hDC, pBitmap, NULL, NULL, &rcView, NULL, SRCCOPY ) ;
if(nRet != SUCCESS)
return nRet;
/* Set the rectangle coordinates with respect to the DC dimensions*/
SetRect ( &rcShapeRect, 10, 10, 150, 150 ) ;
/* Set the DC Extents */
RECT rcClient;
GetClientRect(hWnd, &rcClient);
nRet = L_PntSetDCExtents ( pPaint, &rcClient );
/* Use the current shape properties to draw a rectangle to DC (hDC) */
nRet = L_PntDrawShapeRectangle ( pPaint, hDC, &rcShapeRect ) ;
if(nRet != SUCCESS)
return nRet;
/* Release the device context */
ReleaseDC ( hWnd, hDC ) ;
/* Free the paint tools handle */
L_PntFree ( pPaint ) ;
return SUCCESS ;
}