GoDiagram - Node Classes

GoDiagram makes it easy to build applications where users can see and manipulate graphs of nodes connected by links. GoDiagram provides this functionality with the GoNode, GoPort and GoLink classes. Nodes are groups containing one or more ports. Links connect two ports. (or in similar terminology: nodes and arcs, or entities and relationships, or vertices and edges)

Groups provide a way of making a single “object” out of other objects. Nodes are typically implemented as a group of simpler but distinct objects (such as text and an icon, along with ports for connecting links).

GoDiagram provides many built-in Node classes as well as several samples Node classes.

Node Classes included

In addition to full working sample applications, GoDiagram also includes several Node classes. GoDiagram provides implementations of of the most commonly needed kinds of nodes. While you can always write your own custom node class with GoDiagram, many applications can use these existing Nodes as-is or with slight enhancements.



Click to play short Video

Click to play short GoBasicNode Demo video

GoBasicNode is a node with a shape, one port for connecting links in the middle and an optional label. Dozens of shapes are pre-defined by GoDiagram, but you can also create your own.



GoIconicNodes precedence graph

BeatPaths sample uses GoIconicNode

GoIconicNode is similar to GoBasicNode, a simple node with an image and a text label and a single port.

Simple Node with Figures


Vertical Simple Node


GoSimpleNode is a node with two ports, an icon, and a label

GoTextNode in Classier Sample

GoTextNode in the Classier sample

in Flowchart sample

GoTextNode (with added icon) in Flowgrammer

GoTextNode, a node with four ports, one at each side, that displays some text with a background shape.



GoGeneralNode is a node with any number of labeled ports on either side, an icon, and labels on the top and/or bottom.


Custom GoGeneralNodes from NodeLinkDemo


Flexible options for port and port label positions

GoBoxNode, links spread

GoBoxNode using LinkPointsSpread to evenly distribute link points

GoBoxNode is a node containing an object, with a single port that is smart about connecting links to the closest side.



GoMultiTextNode displays any number of text items vertically, with ports on either side of each text item.

Comment Node


GoBalloon node




GoComment and GoBalloon are useful additions that allow diagrams to have in-place comments and documentation. GoButton looks and acts like a button, but is lighter-weight than a real Button Control.

Additional Sample Node Classes

Additional example classes derived from the predefined ones, including: LimitedNode, AutoLinkNode, SequencedNode, GraphNode, and GraphLink. The source for these additional nodes is included in the sample applications.

Sequence Node

SequencedNode demonstrates how to extend a GoGeneralNode by adding a port at the top and a port at the bottom. (the NodeLinkDemo sample)


LimitedNode, a GoGeneralNode whose location is limited to a certain range in the X dimension, that has context menu commands for adding and removing ports, whose ports are limited to at most three links, and whose ports change color according to how many links are connected (in the NodeLinkDemo sample)

Family Tree Node

PersonNode, a GoTextNode that displays a person’s name (in the FamilyTree sample)


AutoLinkNode, a GoGeneralNode with a special auto-linking port that automatically creates new ports as the user tries to link to it (in the NodeLinkDemo sample)


MultiPortNode sample class in NodeLinkDemo, a GoIconicNode with an arbitrary number of ports at arbitrary positions from NodeLinkDemo

MultiTextNode 2

MultiTextNodeWithBack, using a GoCylinder as the background from NodeLinkDemo


RecordNode Sample class NodeLinkDemo


RichText class in NodeLinkDemo sample (only in WinForms)


TreeApp Sample with expandable nodes

Pin Node


A variety of new sample node classes exhibiting frequently requested behaviors. The ClassDiagramNode implements a UML style class node with collapsing sub-sections:


The CollapsingRecordNode supports collapsing sections like the ClassDiagramNode above, but also provides ports on both sides of each item:


The ScrollingMultiTextNode inherits from GoMultiTextNode and adds the ability to scroll the text items within the node:


Return to GoDiagram - Features