我需要在 C# WinForms 中绘制一个大型的交互式树结构 - 一个公司层次结构。
除了将在树中排列块的算法可能会非常复杂之外,我不确定如何实现实际的画布和绘图代码。
乍一看,我可以创建一个巨大的图像(或一个大图像矩阵),并使用Graphics
orBufferedGraphics
来渲染一个给定用户放大的小区域。这将提供您可能在 Google 地图上看到的缩放和平移效果。
至于交互性,这里可以做什么?我希望用户能够突出显示某些人(特定成本中心的人,承包商等......)。此外,如果随着用户放大,树会逐渐显示更多关于员工的信息,那将是非常酷的。我是否应该只对MouseMove
事件进行命中测试并以编程方式添加/删除/更改构成画布上图片的内容?
这是我应该避免使用 GDI 并可能使用 DirectDraw 的东西吗?我不想矫枉过正——我只想能够直观地表示结构并让用户可以选择打印它。
或者,是否有可用的(免费软件?)库,允许缩放和平移交互?我可能问得有点多,但也许一个也可以处理树结构的?
我在较小的规模上对每个单独的概念都有经验,但是在这样的大型结构中没有任何东西可以组合在一起。我预测如果我做错了什么,它会变成非常缓慢、滞后和占用内存的事情。
我只涉足WPF。我几乎只在 .Net 中使用 WinForms - WPF 中有什么东西可以使这项任务变得更加容易吗?