LAnnPolyline::GetPoints
#include "ltwrappr.h"
virtual L_INT LAnnPolyline::GetPoints(pPoints)
pANNPOINT pPoints; |
/* pointer to the array */ |
Fills the specified array of ANNPOINT structures with the vertices of the annotation object. This function is available in the Document/Medical Toolkits.
Parameter |
Description |
pPoints |
Pointer to the array that this function will fill with the vertices of the object. |
Returns
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Comments
You can use the LAnnPolyline::GetPointCount function to determine the required size of the array before calling this function.
The ANNPOINT structure is like a Windows POINT structure, except that it uses double-precision floating point values.
Coordinates of an object's points are relative to its container object. The coordinates are interpreted using the container's scaling factors and offsets, which are described in Low-Level Coordinate System for Annotations.
Required DLLs and Libraries
LTANN For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
See Also
Functions: |
|
Topics: |
Annotation Functions: Getting and Setting Geometric Properties |
|
Annotation Functions: Using Window Coordinates to Define an Object |
Example
/* This example gets the points for an object, shrinks the object by 1/2 */
/* and then puts the points back to the object. */
L_VOID TestPolyPoints(HWND hwnd, LAnnContainer& LeadContainer,
L_BOOL fDoubleClick, L_INT x, L_INT y, L_UINT keyFlags)
{
HANNOBJECT hObject; // Local variable for the annotation object
POINT PointToTest; // The point in the window's client area to test
L_UINT TestResult; // Result of the test
pANNPOINT pPoints; // Pointer to the points in the object
L_UINT uCount; // Number of points in the object
L_INT i;
ANNRECT rcDefine;// Defining rectangle for the object
L_DOUBLE cx; // Center x point
L_DOUBLE cy; // Center y point
LBuffer LeadBuffer ;
// Did we hit an object?
// Use incoming coordinates to specify the point to test
PointToTest.x = x;
PointToTest.y = y;
// Get the object at the specified point
LeadContainer.HitTest( &PointToTest, &TestResult, &hObject);
if ( TestResult == ANNHIT_BODY )
{
LAnnPolyline LeadPolyline(hObject) ;
// first, get the # of points in the object
uCount = LeadPolyline.GetPointCount();
LeadBuffer.Reallocate(sizeof(ANNPOINT) * uCount);
pPoints = (pANNPOINT)LeadBuffer.Lock() ;
// Now, get the points
LeadPolyline.GetPoints(pPoints);
// Get the defining rect, and find the center point
LeadPolyline.GetRect ( &rcDefine );
cx = (rcDefine.right + rcDefine.left) / 2;
cy = (rcDefine.bottom + rcDefine.top) / 2;
for (i=0; i<(L_INT)uCount; i++)
{
pPoints[i].x += (cx - pPoints[i].x) / 2;
pPoints[i].y += (cy - pPoints[i].y) / 2;
}
// Put the new points back into the object
LeadPolyline.SetPoints ( pPoints, uCount);
LeadBuffer.Unlock() ;
}
}