Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实现复杂C#GUI的策略_C#_Winforms_User Interface - Fatal编程技术网

实现复杂C#GUI的策略

实现复杂C#GUI的策略,c#,winforms,user-interface,C#,Winforms,User Interface,我想创建一个交互式简化版的Blender节点编辑器,以接触复杂的GUI编程。我有使用基本GUI的经验,但我想了解更多 以下是混合器节点编辑器的示例: 我的策略: C#用于应用程序编程 表示为抽象节点类的子类的节点类型 WinformsGUI。(我不熟悉WPF,而且我读过将WPF与外部图形集成可能很困难。) OpenGL/Direct3D(或类似?),用于与节点交互并渲染到Winforms面板中。这可以是p/c++或单独的C++项目以及基础C应用程序。我不确定哪一个更好 将节点结构的有用表示形

我想创建一个交互式简化版的Blender节点编辑器,以接触复杂的GUI编程。我有使用基本GUI的经验,但我想了解更多

以下是混合器节点编辑器的示例:

我的策略:

  • C#
    用于应用程序编程
  • 表示为抽象
    节点
    类的子类的节点类型
  • Winforms
    GUI。(我不熟悉
    WPF
    ,而且我读过将
    WPF
    与外部图形集成可能很困难。)
  • OpenGL
    /
    Direct3D
    (或类似?),用于与节点交互并渲染到
    Winforms
    面板中。这可以是p/c++或单独的C++项目以及基础C应用程序。我不确定哪一个更好
  • 将节点结构的有用表示形式输出到
    JSON
    中供以后使用

我在寻找一些关于如何前进的建议。这个策略有意义吗?什么是警戒


对于图形编程,我应该使用
OpenGL
Direct3D
,还是使用自定义控件绘制之类的不同路径?请记住,我希望学习,而不是建立一个强大的生产系统。

将WPF与外部图形集成可能很困难
您能详细说明一下您的想法吗?什么是外部图形?就我个人而言,我会选择WPF。我会说WinForms和复杂的GUI不适合。舒尔,如果您对WPF进行编程,将有很多值得学习的地方。您需要了解XAML。仅使用表单设计器是不够的。¨WPF用于创建复杂的UI,可以很好地扩展到不同的设备。所以我认为你应该考虑that@thehennyy在这种情况下,我认为“外部图形”指的是使用一个单独的C++项目来包含OpenGL图形引擎,将所有方面结合到一个项目中。我已经使用WPF和WinForms编写了这种风格的接口。WPF使它在我看来更容易一些,但工作负载非常相似,除非您使用的是MVVM模式。@RogerN我想您的意思是在自定义
控件
对象内执行所有绘制?您是否发现这对于正常的用户交互来说足够灵敏?