背景信息/布局
我正在尝试将径向树显示为 UI 的一部分。树的数据是静态的,通常有几千个节点。就其本身而言,仅仅绘制它并不是什么大不了的事——我已经可以根据我对 GTK 和 Cairo 的了解来处理它。
我的问题是我想要一个面板,在背景图像顶部显示树,并允许用户放大和缩小并进行交互(单击节点以获取信息)。
这是一张非常粗略的图片,显示了我的应用程序的布局。黄色区域是我想要树的地方。 .
这是树形显示,共四层。整个事情需要是可缩放的(包括背景图像)。 .
- 突出显示感兴趣的节点(选定的节点,或与用户查询匹配的节点)和它们之间的路径。
- 树中的节点。我打算让这些是可点击的。
- 放射状树的年轮。
- 背景图像。
我可以做什么:
- 渲染背景图像。
- 画出树的年轮。
- 绘制树的节点。
- 围绕节点和它们之间的路径绘制高光。
我想做的事:
- 使整个事物可缩放。
- 使节点(当前或图像)可点击。
我尝试过使用像素缓冲区来重新缩放背景图像。只要它只是背景图像,它就很实用(但不是很优雅),尽管我对结果并不十分自豪。然而,当谈到使节点可点击和整个事物可缩放时,我有点迷失了。尤其是后半部分。
我一直在使用 Mono 和 Linux 上 GTK 的 C# 绑定。如果这会使它变得更容易,我愿意更改 GUI 工具包,但前提是它确实使它变得更容易。考虑到树的大小(1000 < N < 10000,其中 N 是树中的节点数),缩放时的性能可能是一个问题,但这不像我要处理数百万个节点或任何东西。