#include "ltwrappr.h"
L_INT LVectorObject::ExplodeObject(dwFlags)
Explodes a vector object or objects to smaller parts. This function is available in the LEADTOOLS Vector Imaging Pro Toolkit.
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. |
| Value | Meaning |
|---|---|
| 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
This example will
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;}