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