注意:这个问题不是关于使用一些预制库,所以它可能不是实现基于节点的图形界面的重复?
我正在尝试制作像 Autodesk 3DS MAX 在材质编辑器中使用的基于节点的界面:
到目前为止,我有一些节点的简单图形(.png),我刚刚完成了曲线算法(Cubic Bezier Curve)
到目前为止,所有的逻辑、类和其他一些代码已经完成了 70%,但我想知道在 C# WinForm 中实现基于节点的接口的“正确”方式到底是什么。
我曾考虑过使用 OpenGL 或 XNA ( Direct3D ),但后来我认为这对于目的来说太过分了。
下一个 WPF 进入了我的脑海,但无论如何我都没有使用 WPF 处理过这样的事情,所以我不知道这是否可行并且性能也很好。
像这样的提示,我可以在每个节点周围拖动吗?我可以用绘制的图形注册点击和拖动事件吗?
我希望能够让用户创建节点,为它们提供属性和值,连接节点并将它们拖动到 WinForm 的滚动区域中(就像在容器中一样)
好吧,你有什么建议?从哪里开始?该怎么办 ?也许有任何例子或参考?
编辑:
这是我正在尝试制作的节点结构的简单(图形)示例:
如您所见,我希望在节点内有按钮,或其他用户控制的元素,如开关或调光器之类的东西。请注意,此图像仅用于显示我想如何构造节点和每个“矩形”。
所以每个矩形都应该有它自己的属性( signal = true / false , connectedNode = "node_id" )并且它也是自己的鼠标事件,我想将所有矩形分组到一个代表节点的对象。
所以我的问题是:如何在“面板”之类的控制元素内绘制矩形? (我最好的情况是我想使用 .png 的主矩形和连接器矩形而不是绘制纯色重新排列)
更新: system.drawing 类是什么?我可以简单地画成“面板”元素吗?什么是可拖动性?