-1

注意:这个问题不是关于使用一些预制库,所以它可能不是实现基于节点的图形界面的重复?


我正在尝试制作像 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 类是什么?我可以简单地画成“面板”元素吗?什么是可拖动性?

4

2 回答 2

1

首先,您需要了解 mani tec 能够满足您的需求。

关于性能是:

按从好到坏排序的列表

-xna 或 open gl - (Direct 3d 或 Direct X)
-windows forms (System.Windows.Forms)
-wpf

如果您对简化开发感兴趣,请从最简单的顺序开始:

-wpf
-winforms
-xna (...)


为了帮助你多一点,我会说:

在 Win Forms 中,您可以自定义用户控件,在用户控件中,您可以覆盖受保护的方法调用 onpaint,在此方法中,您可以执行与鼠标的移动和单击交互的实时设计。

如果您需要有关它的更多信息,请询问。

于 2012-12-16T02:00:57.113 回答
1

您应该能够找到自定义 Winforms 用户控件可以响应的鼠标向上和鼠标向下事件。从那里您应该能够实现单击和拖动(鼠标单击的控件相对位置通常在事件结构中传递)并从那里开始。

我首先编写一个能够拖动单个对象并从那里开始的小型原型 - 尝试几种不同的方式,看看什么是可以理解和干净的。

完成后,您可以开始设计课程设置;您可能希望将许多常见的拖放代码放在实现边界框和类似内容的基类中,然后创建要绘制的对象/节点/线及其关联的列表。慢慢建立自己的方式;不打算一口气构建整个事物。

于 2012-12-16T02:09:35.657 回答