#include "ltwrappr.h"
L_INT LVectorObject::ExplodeObject(dwFlags)
L_UINT32 dwFlags; |
flag that indicates how to explode the object |
Explodes a vector object or objects to smaller parts. This function is available in the LEADTOOLS Vector Imaging Pro Toolkit.
| Parameter | Description | |
| dwFlags | Flag that indicates which objects to explode. Possible values are: | |
| Value | Meaning | |
| 0 | Explode all objects. | |
| VECTOR_FLAGS_EXPLODE_TO_LINES | Explode objects into lines. | |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
If the VECTOR_FLAGS_EXPLODE_TO_LINES flag is not specified, then not all objects can be exploded, for example an attempt to explode a VECTOR_LINE has no effect and returns SUCCESS.
Below is a list of object types and the objects into which they explode:
Object type |
After LVectorObject::ExplodeObject |
VECTOR_ARC |
Same. |
VECTOR_CHORD |
Same. |
VECTOR_CIRCLE |
Same. |
VECTOR_ELLIPSE |
Same. |
VECTOR_ELLIPTICALARC |
Same. |
VECTOR_LINE |
Same. |
VECTOR_PIE |
Same. |
VECTOR_POLYBEZIER |
Same. |
VECTOR_POLYDRAW |
Same. |
VECTOR_POLYGON |
Same. |
VECTOR_POLYLINE |
nPointCount of VECTOR_LINE's. |
VECTOR_RASTER |
Same. |
VECTOR_RECTANGLE |
4 VECTOR_LINE's. |
VECTOR_TEXT |
Same. |
VECTOR_VERTEX |
Same. |
Note that exploding an object can convert the object into a different type. For example, exploding a VECTOR_RECTANGLE will result in four VECTOR_LINE objects. The original vector object no longer exists. Therefore, exploding a valid LVectorRectangle object invalidates the LVectorRectangle object.
To deteremine the validity of an object, call LVectorObject::IsValid.
Required DLLs and Libraries
LVKRN 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: |
|
Topics: |
This example will 1. Create new image of one polyline 2. Explode the polyline 3. Enumerate the new objects
class LMyVectorLayer2: public LVectorLayer{public:LVectorBase *m_pVectorDst;public:LMyVectorLayer2() {};virtual ~LMyVectorLayer2(){};virtual L_INT EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject);L_INT LMyVectorLayer2::EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject){UNREFERENCED_PARAMETER(pVector);L_TCHAR *pszMsg = TEXT("");switch (pObject->nType){case VECTOR_LINE:pszMsg = TEXT("Vector Line");break;case VECTOR_RECTANGLE :pszMsg = TEXT("Vector Rectangle");break;case VECTOR_POLYLINE:pszMsg = TEXT("Vector Polyline");break;}MessageBox(NULL, pszMsg, TEXT(""), MB_OK);return SUCCESS ;}//LVectorObject::ExplodeObject()//LVectorObject::IsValid()////Example81// This example will// 1. Create new image of one polyline// 2. Explode the polyline// 3. Enumerate the new objectsL_INT LVectorObject__ExplodeObjectExample(HWND hWnd, LVectorBase *pVector){UNREFERENCED_PARAMETER(hWnd);L_INT nRet;LMyVectorLayer2 VectorLayer;VECTORLAYERDESC LayerDesc;//Create and add a new layernRet = VectorLayer.GetLayerDesc(&LayerDesc);if(nRet != SUCCESS)return nRet;lstrcpy(LayerDesc.szName, TEXT("Layer One"));nRet = VectorLayer.SetLayerDesc(&LayerDesc);if(nRet != SUCCESS)return nRet;nRet = pVector->AddLayer(&VectorLayer);if(nRet != SUCCESS)return nRet;//Create a polyline objectVECTORPOLYLINE PolyLine;VECTORPOINT Points[4] = { 50, 50, 0, 0,80, 50, 0, 0,80, 80, 0, 0,50, 80, 0, 0 };PolyLine.nPointCount = 4;PolyLine.Point = Points;PolyLine.Pen.nSize = sizeof( VECTORPEN );PolyLine.Pen.bExtPen = FALSE;PolyLine.Pen.NewPen.LogPen.lopnStyle = PS_SOLID;PolyLine.Pen.NewPen.LogPen.lopnWidth.x = 10;PolyLine.Pen.NewPen.LogPen.lopnWidth.y = 10;PolyLine.Pen.NewPen.LogPen.lopnColor = RGB(0,255,0);LVectorPolyLine VectorPolyLine(&PolyLine);//Add polyline to layernRet = VectorLayer.AddObject(&VectorPolyLine);if(nRet != SUCCESS)return nRet;//Enumerate objects--should get one polylinenRet = VectorLayer.EnumObjects();if(nRet != SUCCESS)return nRet;//Enumerate objects--should get three linesnRet = VectorLayer.EnumObjects();if(nRet != SUCCESS)return nRet;return SUCCESS;}}