GoDiagram - Concepts and Features

The GoDiagram library, Northwoods.Go, is a set of controls and classes built on the .NET platform. GoDiagram makes it easy to deliver editors that allow users to see and manipulate diagrams of two-dimensional graphical objects arranged in a scrollable window.

GoDiagram provides a variety of basic graphical objects such as rectangles, ellipses, polygons, text, images, and lines. You can group objects together to form more complex objects. You can customize their appearances and behaviors by setting properties and overriding methods.





Graph Layout

A True .NET component

GoDiagram is written entirely in C#. It only depends on the standard .NET Framework classes and does not explicitly call any external functions.

Sample Program

Here is the full VB.NET source code to MinimalApp. The screenshot shows how the MinimalApp appears after selecting the two initial nodes, drag-copying them, moving them, creating links between some of them, and then renaming a blue one to “blue” and a magenta one to “magenta”.

simple diagram vb code

GoDiagram View

A GoDiagram view is a control that displays a GoDiagram document. It supports mouse-based object manipulation, including selecting, resizing, moving and copying using drag-and-drop. GoDiagram organizes input behaviors into tools that you can modify, override, or add or remove from a view. The view also supports in-place editing, printing, and grids.

GoDiagram Document

A GoDiagram document implements a model that supports manipulation of objects. Adding an object to the document makes it visible in the document's views. You can organize objects in layers. GoDiagram provides support for composing and manipulating graphs (node & arc diagrams), where nodes have ports that are connected by links.

Flexibility and Extensibility

The GoDiagram library is flexible and extensible. Predefined node classes make it easy to build many kinds of graphs. You can easily customize most objects for application-specific purposes by setting properties or by subclassing. You can add completely new graphical objects to the existing framework.


To provide greater customizability and ease of use, Northwoods offers, as a separate option, another library, Northwoods.Go.Layout. This option extends GoDiagram by providing sophisticated automatic layout algorithms for nodes in graphs. The AutoLayout component is sold and documented separately.

The full documentation to GoDiagram is provided in the evaluation kit.