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. |