A: Set the Obstacle property to false:
backgroundShape.Obstacle = false
A: Setting Anchoring to Keep:
Diagram.RoutingOptions.Anchoring = Keepwill do that.
A: If you need to show the differences between two revisions of the same document, you could implement a change log and show the differences as a list of log entries recorded between some dates.
Enable the Diagram.UndoManager property and the UndoManager.UndoEnabled property and handle the Diagram.ActionRecorded event. In the event handler, create a log entry based on the command being recorded. Add a time-stamp to each record so you can compare the document revision dates with the log records times.
You can make the collection of log entries serializable and store it in the Diagram.Tag.
Another possibility is to assign unique IDs to each DiagramItem.Tag. Then you can compare the document revisions by checking whether items with some ID exist in both versions, so you know if a DiagramItem has been added or removed. If items with some ID exist in both documents, you can further compare their property values, for example, Text, Bounds, and so on.
A: You can create your own class that derives from ShapeNode and add an ID property to it. To let users create items of your type, set the view.Behavior to Custom and the view.CustomNodeType to typeof(your_node_class). For an example showing how to use custom types with FlowChart.NET, check the IconNodes sample project.
A more simple solution is to assign the id to the item's Tag property. An additional "bonus" is that you will be able to use the FindNode method of Diagram to search for nodes by their tag/ID.
A: At this time we do not provide such symbols. Instead you could create your own Shape definitions whose Image property is set to a bitmap or metafile representing the respective symbol. For example, check the symbol library sample "LogicGates", installed in the Flowchart.NET Samples folder.