来自C ++& MFC背景,在开发应用程序GUI时有没有更好的(可维护性/定制化)平台?
我们正在开发工业应用(机器视觉),其中:
- 性能关键(主要是CPU atm中的图像处理,但下一步是GPU)
- 低级硬件接口(内部PCI设备,图像采集卡,运动卡)
- 实时数据可视化(图像/统计图)
-Future路线图包括分布式处理和远程访问的可联网性。
跨平台对我们来说不重要,因为系统在受控环境中运行(客户只关心系统是否运行并且他们获得了输出)。
还有移民成本问题(第三方依赖关系,开发人员和服务人员的培训成本)
修改
澄清上述“图像处理”:
我指的是“图片”(矩阵格式的2D信息)而不是图形(通常是3D矢量化)。目前,我们使用第三方成像库(用于空间域处理,如分割,OCR / OCV,形态学,模式匹配)并结合我们的结果逻辑。
答案 0 :(得分:3)
如果您需要性能关键的图形处理,那么C ++ / DirectX或C ++ / OpenGL是您最好的选择。 C ++ / DirectX可以说是两者中更容易维护的。
那说依赖来处理您正在进行的实际处理,您可以考虑将部分UI移动到更易维护的平台。 .NET框架/ WPF可以做一些相当惊人的事情,并且具有良好的MVVM模式实现,并且可以令人惊讶地维护。网络方面也是如此; WCF从代码中抽象出许多常见协议,从而实现更清晰,更易维护的网络代码。您甚至可以在非托管处理和C ++ / CLI中的托管层之间编写转换层。
那说,这都是非常主观的。我不能从你的要点中说出足够好的判断,你是否可以将一些甚至所有的处理工作卸载到.NET / C#。这值得考虑,但我的直觉告诉我,这可能不是你最好的选择。
答案 1 :(得分:3)
作为Qt的粉丝,我不应该提及它。
您还应该阅读以下一些问题和答案:
Good C++ GUI library for Windows https://stackoverflow.com/questions/610/gui-programming-apis
答案 2 :(得分:2)
我在开发C ++科学应用程序之前所做的是,它将在基于控制台的应用程序下完全开发它。基于控制台的应用程序将能够从用户键盘接受各种类型的命令,并相应地执行操作。例如:
image_processor > load input.png
image_processor > save out.png
这方面的好处是,我可以100%集中我的算法设计,而不用担心如何适应GUI框架。它们是MFC或QT。
在一天结束时,我只是简单地将基于控制台的应用程序的STDIN挂钩到GUI应用程序通信通道,而不是从键盘输入流中获取输入。然后,我的GUI应用程序将基于字符串命令,与控制台应用程序通话并接收反馈。
猜猜我用什么来开发GUI? Java Swing
:)
我想我正在采取Unix人的方法。看看乔尔说的话:
假设您选择了Unix程序员和Windows程序员,并为每个程序员分别创建相同的最终用户应用程序。 Unix程序员将创建一个命令行或文本驱动的核心,偶尔,作为一个事后的想法,构建一个驱动该核心的GUI。这样,应用程序的主要操作将可供其他程序员使用,他们可以在命令行上调用程序并将结果作为文本读取。 Windows程序员倾向于从GUI开始,偶尔,作为事后的想法,添加一种脚本语言,可以自动化GUI界面的操作。
我意识到采用Windows方法,最终会得到更多user friendly
个应用程序。但是,如果你主要关心的是如何很好地编写复杂的算法并且GUI是次要的,那么我建议你选择Unix方法。