Adding and Displaying Vector Objects

Start with the project you created in Working with Layers.

Take the following steps to start adding new layer and objects to the vector handle.

Note: This tutorial will only use 3 types of objects (Line, Ellipse and Polygon) to keep things simple. You can refer to Vector object types all object types supported by the vector toolkit.

  1. Click the "Class View" tab of the project workspace.

  2. Click to open the MyVectorWindow branch.

  3. Double-click the MsgProcCallBack () member function.

  4. Add the following code immediately before case '1':

    case 'l': 
    case 'L': 
    { 
       // add a new vector line 
       VECTORLINE     Line; 
       L_INT          i; 
        
       Line.Pen.nSize = sizeof( VECTORPEN ); 
       Line.Pen.bExtPen = FALSE; 
       Line.Pen.NewPen.LogPen.lopnStyle = PS_SOLID; 
       Line.Pen.NewPen.LogPen.lopnWidth.x = 1; 
       Line.Pen.NewPen.LogPen.lopnWidth.y = 1; 
       Line.Pen.NewPen.LogPen.lopnColor = RGB( rand() % 246 + 10, rand() % 246 + 10, rand() % 246 + 10 ); 
        
       // set the line start and end points 
       for( i = 0; i < 2; i++ ) 
       { 
          Line.Point[ i ].x = rand() % 100; 
          Line.Point[ i ].y = rand() % 100; 
          Line.Point[ i ].z = rand() % 100; 
       } 
        
       LVectorLine VectorLine(&Line); 
        
       // add to current active layer 
       LVectorLayer VectorLayer; 
       GetActiveLayer(&VectorLayer); 
       VectorLayer.AddObject (&VectorLine ); 
       this->Reset (); 
    } 
    break; 
     
    case 'e': 
    case 'E': 
    { 
       VECTORELLIPSE     Ellipse; 
        
       Ellipse.Point.x = rand() % 100;; 
       Ellipse.Point.y = rand() % 100;; 
       Ellipse.Point.z = rand() % 100;; 
        
       Ellipse.Pen.nSize = sizeof( VECTORPEN ); 
       Ellipse.Pen.bExtPen = FALSE; 
       Ellipse.Pen.NewPen.LogPen.lopnStyle = PS_SOLID; 
       Ellipse.Pen.NewPen.LogPen.lopnWidth.x = 2; 
       Ellipse.Pen.NewPen.LogPen.lopnWidth.y = 2; 
       Ellipse.Pen.NewPen.LogPen.lopnColor = RGB( rand() % 246 + 10, rand() % 246 + 10, rand() % 246 + 10 ); 
        
       Ellipse.Brush.nSize = sizeof(VECTORBRUSH); 
       Ellipse.Brush.VectorBrushStyle = VECTORBRUSH_STANDARD; 
       Ellipse.Brush.BrushType.StandardBrush.LogBrush.lbColor = RGB( rand() % 246 + 10, rand() % 246 + 10, rand() % 246 + 10 ); 
       Ellipse.Brush.BrushType.StandardBrush.LogBrush.lbStyle = BS_SOLID; 
        
       Ellipse.xRadius = rand() % 10;; 
       Ellipse.yRadius = rand() % 10;; 
        
       LVectorEllipse VectorEllipse(&Ellipse); 
        
       // add to current active layer 
       LVectorLayer VectorLayer; 
        
       GetActiveLayer(&VectorLayer); 
       VectorLayer.AddObject (&VectorEllipse); 
       Reset (); 
    } 
    break; 
    case 'g': 
    case 'G': 
    { 
       VECTORPOLYGON     Polygon; 
       L_INT             i; 
        
       //Create Polygon Object 
       Polygon.Pen.nSize = sizeof( VECTORPEN ); 
       Polygon.Pen.bExtPen = FALSE; 
       Polygon.Pen.NewPen.LogPen.lopnStyle = PS_SOLID; 
       Polygon.Pen.NewPen.LogPen.lopnWidth.x = 2; 
       Polygon.Pen.NewPen.LogPen.lopnWidth.y = 2; 
       Polygon.Pen.NewPen.LogPen.lopnColor = RGB( rand() % 246 + 10, rand() % 246 + 10, rand() % 246 + 10 ); 
        
       // set the polygon brush 
       Polygon.Brush.nSize = sizeof( VECTORBRUSH ); 
       Polygon.Brush.VectorBrushStyle = VECTORBRUSH_STANDARD; 
       Polygon.Brush.BrushType.StandardBrush.LogBrush.lbColor = RGB( rand() % 246 + 10, rand() % 246 + 10, rand() % 246 + 10 ); 
       Polygon.Brush.BrushType.StandardBrush.LogBrush.lbStyle = BS_SOLID; 
       Polygon.Brush.BrushType.StandardBrush.LogBrush.lbHatch = 0; 
        
       Polygon.nPointCount = rand() % 5 + 3; 
       Polygon.Point = (pVECTORPOINT) malloc(Polygon.nPointCount * sizeof( VECTORPOINT ) ); 
       for( i = 0; i < Polygon.nPointCount; i++ ) 
       { 
          Polygon.Point[ i ].x = rand() % 100; 
          Polygon.Point[ i ].y = rand() % 100; 
          Polygon.Point[ i ].z = rand() % 100; 
       } 
        
       // set polygon fill mode 
       Polygon.nPolyFillMode = VECTOR_POLY_ALTERNATE; 
        
       LVectorPolygon VectorPolygon(&Polygon); 
        
       // add to current active layer 
       LVectorLayer VectorLayer; 
       GetActiveLayer(&VectorLayer); 
       VectorLayer.AddObject (&VectorPolygon); 
        
       free( Polygon.Point ); 
       Reset (); 
    } 
    break; 

  5. Compile and run the demo.

  6. Hit the 'L' key to create random lines. Hit the 'G' key to create random polygons. Hit the 'E' key to create random ellipses.

Help Version 21.0.2021.4.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Vector C++ Class Library Help