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 lineVECTORLINE 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 pointsfor( 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 layerLVectorLayer 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 layerLVectorLayer VectorLayer;GetActiveLayer(&VectorLayer);VectorLayer.AddObject (&VectorEllipse);Reset ();}break;case 'g':case 'G':{VECTORPOLYGON Polygon;L_INT i;//Create Polygon ObjectPolygon.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 brushPolygon.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 modePolygon.nPolyFillMode = VECTOR_POLY_ALTERNATE;LVectorPolygon VectorPolygon(&Polygon);// add to current active layerLVectorLayer 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. |