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