With The Case Of  Release The Power OF  Visual C++ !   Home Products | Purchase Support | Downloads  
View in English
View in Japanese
View in
View in Franšais
View in Italiano
View in 中文(繁體)
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
VX++ Cross-Platform C/C++
ActiveX COM Products
Technical Support
  General Q & A
Discussion Board
Contact Us


Get Ready to Unleash the Power of UCanCode .NET

CAD 2D Draw - Geometry Library with VC++ Source Codes


GeoIO lib is a simple geometry library that encapsulates the drawing of various geometrical entities (like lines, circle, arc, text etc), storing them in a list with support for undo/redo operations. There is a sample application called Cad 2D attached which exposes some of the basic drawing and serilaization functionality of the GeoIO library.  


Couple of developers/programmers have come across a situation to develop simple application to draw 2-Dimensional geometry entities. However they are blocked due to many reasons like lack of time, unwilling to explore OpenGL, develop the module from base etc. The MFC set of classes (DeviceContext) gives some good functionality to draw simple entities like lines, circles, rectangles etc, but a first timer may take sometime to learn, understand and experiment it. GeoIO library has encapsulated the complete functionality of MFC into set of core geometry classes. All that you have to do is add this module into your project and start with it. The module also supports drawing, dragging operation OnMouseMove handler and serialization.


GeoIO is simple MFC DLL. Add this as dynamic-linked or static-linked to your project. Initially the usage of this module might look difficult, but once you read the below fundamental concepts you should sail through easily. Open the sample project Cad 2D (SDI MFC application) which uses GeoIO to draw 2D basic geometry objects. Please explore this sample project to learn and understand the usage of GeoIO. 


NOTE: The project has .vcproj and .vcxproj files so it should open in VS2010 and earlier versions of Visual Studio. 

Geometry classes in GeoIO: 

  • CPrimitive - the principle base class for all the below mentioned classes.
  • CGeoArc - class to draw and serialize an arc 
  • CGeoCircle - class to draw and serialize a circle
  • CGeoLine - class to draw and serialize a line
  • CGeoPolybezier - class to draw and serialize a polybezier
  • CGeoPolygon  - class to draw and serialize a polygon
  • CGeoRectangle - class to draw and serialize a rectangle
  • CGeoText - class to draw and serialize a string

Note: Some drawing logic have been inspired from various online articles

Collection classes:

  • CEntityList - class to hold objects of CPrimitive (like CGeoArc, CGeoLine, CGeoRectangle, etc).
  • CLayerList - class to hold objects of CLayer 
  • CLayer - class stores an instance of CEntityList. A CLayer object is identified by a layer ID.

So, in your application follow the below procedure:

CLayer *pLayer = new CLayer(); // member variable of your window class
CPrimitive *pEntity = new CGeoLine(); // create an entity of time line
pEntity->m_StPnt = CPoint(10, 10); 
// set the start point of the line 
pEntity->m_EndPoint =  CPoint(100, 100); // set the end point of the line 
pEntity->m_clr = RGB(255, 255, 255); // set the color of the line
pLayer->AddEntityToLayer(pEntity); // store it to the layer class 

In the OnDraw(CDC *pDC) method of your window class, call the

pLayer->DrawLayer(pDC); // NOTE: pLayer should be a member of your window class that is created in the constructor.

Also note that in the example above I have hard-coded the pEntity->m_StPnt and pEntity->m_EndPnt to some random CPoint values. Ideally this should be done in the OnLButtonDown handler which gives you the CPoint data as a parameter.  

Concept of layers 

In your application, you can create 'N' number layers and maintain them in the CLayerList class. In the OnDraw() method of your window class, you can select which CLayer to be drawn. If you wish to draw all the layers then iterate each layer in the CLayerList and then call DrawLayer() method of the CLayer



1 UCanCode Advance E-XD++ CAD Drawing and Printing Solution Source Code Solution for C/C++, .NET V2023 is released!

2 UCanCode Advance E-XD++ HMI & SCADA Source Code Solution for C/C++, .NET V2023 is released!

3 UCanCode Advance E-XD++ GIS SVG Drawing and Printing Solution Source Code Solution for C/C++, .NET V2023 is released!

Contact UCanCode Software

To buy the source code or learn more about with:

Ask any questions by MSN: Yahoo:


Copyright ?1998-2023 UCanCode.Net Software , all rights reserved.
Other product and company names herein may be the trademarks of their respective owners.

Please direct your questions or comments to