1

我制作了一个小型 C++ 网络应用程序。它将数据包交换输出到一个文件中。输出如下所示:

From..to..message
1 2 "hi"
2 3 "hi"
3 2 "hi back"
2 1 "hi back"

所以第一个字段是源,第二个是目的地,第三个是消息。我一共有10个节点,全部显示在一行(0...1...2...etc...9),每个输出行对应连续节点之间的一条消息。

我的问题是,随着输出变得越来越大,输出并不那么容易阅读。我想要一个非常小的应用程序(例如,在 java 或 qt 中,无论哪个需要较少的行来实现),它从该输出中读取并从中生成一个小型 GUI 应用程序,以便所有节点都出现在 GUI 中窗口(从 0 到 9,等距,环绕),每次我按右箭头(向前)或左箭头(向后)时,它都会从输出中读取一行,并显示一个从源到目标的箭头,并且在那个箭头上会显示消息。所以是这样的:

              hi
0     1     2---->3     4     5     6     7     8     9 

我对有关 GUI 描述的其他建议持开放态度,我根本不是图形设计师,我所知道的是我希望 GUI 使我的输出更易于解释。如果输出结构更易于解析,也可以更改为其他结构。

4

1 回答 1

2

你可以试试GraphViz

生成一些看起来像

        hi
1     2---->3     4     5     6     7     8     9 

您应该生成一个纯文本文件:

digraph G {
    { rank = same; 1; 2; 3; 4; 5; 6; 7; 8; 9; };
    2 -> 3 [label="hi"];
}

然后,调用dot -Tpng <text file name> -o <output image file name>,你可以得到一个看起来像这样的图像:

示例图

要制作动画,您可能需要更改输出格式gif并使用其他工具来制作动画 GIF。

于 2012-08-02T09:29:28.733 回答