C# 使用数据库中的数据在windows窗体上构建有向图
我有一个包含数据的对象,每个对象都连接到其他对象。 (如object1->object2、object2->object3、object1->object3)。 例如,由两个类表示的对象和连接:C# 使用数据库中的数据在windows窗体上构建有向图,c#,winforms,dgml,graphx-net,C#,Winforms,Dgml,Graphx Net,我有一个包含数据的对象,每个对象都连接到其他对象。 (如object1->object2、object2->object3、object1->object3)。 例如,由两个类表示的对象和连接: class Object { public int Id{get;set;} public string Name{get;set;} public Object(int id, string name) { Id = id; Name =
class Object
{
public int Id{get;set;}
public string Name{get;set;}
public Object(int id, string name)
{
Id = id;
Name = name;
}
}
class Relation
{
public Object obj1{get;set;}
public Object obj2{get;set;}
public Relation(Object o1, Object o2)
{
obj1 = o1;
obj2 = o2;
}
}
例如,以这种方式存储的数据:
List<Relation> relations = new List<Relation>();
List<Object> objects = new List<Object>();
什么是DGML文件?它看起来如何?它看起来像有向图,节点通过链接连接,使用sml with“”方案创建。类似这样的东西:可能的相关问题:也许我可以用代码将dgml转换成图像?或者可能有一些自动可视化图形生成的替代方案?
private GraphExample GenerateGraph()
{
var dataGraph = new GraphExample();
foreach (Object obj in objects)
{
var dataVertex = new DataVertex(obj.name);
dataGraph.AddVertex(dataVertex);
}
var vlist = dataGraph.Vertices.ToList();
foreach (Relation rel in relations)
{
var v1 = vlist.First(x => x.Text == rel.obj1.name);
var v2 = vlist.First(x => x.Text == rel.obj2.name);
var dataEdge = new DataEdge(v1, v2) { Text = $"From {v1.Text} to {v2.Text}" };
dataGraph.AddEdge(dataEdge);
}
return dataGraph;
}