我想开发一个带有复杂GUI的应用程序(带动画的组合框,带样条的图表,透明层......)。我有很好的C#2.0经验,而且我正在学习WPF,但我读到了,遗憾的是,没有计划将WPF移植到Mono。
如果我坚持 C#并使用 OpenGL(通过OpenTK)创建自定义GUI控件,我觉得这将是一项艰苦的工作(与GTK#集成,调试,难以设计表格)。
我可以使用 Java(使用JOGL),但我对此并不熟悉,而且我不了解性能问题。
最后一个选项是 C ++ ,但我必须做一个大的修订版(自上次使用它以来的几年),我觉得很难开发用C ++编写的GUI和便携式应用程序。 (也许我错了!不过,我很害怕用这种语言开发这么复杂的应用程序。)
你有什么建议?我最好选择C#+ OpenTK,Java + JOGL还是返回C ++?
答案 0 :(得分:7)
我会选择Qt。看看http://qt.nokia.com/products/。如果你害怕C ++(但没有理由害怕它),你可以试试Java Swing。我认为这些是多平台桌面GUI开发的最佳选择。
答案 1 :(得分:4)
我建议使用Mono和GTK#。使用.Net开发应用程序远比在C ++中使用它更有效。当然,你必须坚持使用C#3.0和.Net 2.0(实现3.5的一些功能,如LINQ)。但它仍然比C ++提供了更多,例如QT,它会给你。
答案 2 :(得分:1)
去C#以提高工作效率。对C ++没什么,但它有点冗长。 至于GUI库,我认为WinForms曾经在Mono上工作。或者,GTK#。
答案 3 :(得分:0)
我不建议使用wpf,因为它是一个依赖于平台的平台。 Silverlight可能是更好的选择。
但是,如果你正在开发一个Web应用程序,jquery将是一个不错的选择,你也可以考虑adobe flex和adobe air; http://www.adobe.com/products/air/
答案 4 :(得分:0)
多平台是否必须包含iDevices?它可以在网上吗?这是你必须首先回答的两个问题。
如果没有iPad / iPhone支持,那么Flex / Flash / Air是高度图形化的好选择。它是一个多平台,可以确保并轻松地集成到Web上。对于这种情况,可能是您提供有限细节的最佳选择。
Qt也适合你,虽然我不能确定它的图形库是否会让它变得简单。我个人从未使用它,所以其他人必须回答这个问题。但由于它是在C ++中,您也可以使用其他库。
对于这种复杂的GUI,Java Swing听起来很粗糙。制作一些基本的东西并不算太糟糕,但如果你期待像C#这样的体验,我想你会感到沮丧。当然只是个人意见。最后,如果它可以是一个Web应用程序,为什么不坚持使用C#和Silverlight? .NET解决方案可能对您有用,因为您已经在学习它。
答案 5 :(得分:0)
首先,不要将C#用于任何可移植的东西。对于GUI来说,Mono是一个糟糕的选择,原因有两个:
我的个人意见 - 使用C ++。它会给你非常好的便携性和独立性。
您有两种选择:
此外,Java还提供了JDK附带的Swing工具包,并且可以在所有Java平台上使用,甚至是非常奇怪的OpenVMS。
答案 6 :(得分:0)
Silverlight可在Windows / Mac / Linux和某些手持设备上运行,并且正在移植到更多手持设备上。我相信Silverlight最终会被移植到每个流行的设备上。
Silverlight是:
Silverlight具有您请求的所有功能。
Silverlight与C#非常兼容,C#是一种比C ++更高效的语言。
Silverlight基本上是WPF的一个非常大的子集,所以如果您已经了解WPF,那么您已经了解了Silverlight。
除非您绝对需要iPhone / iPad支持,否则我认为这个决定非常明显。
请参阅this comparison of WPF and Cocoa以了解WPF / Silverlight与Qt,Flash / Flex / Air和GTK#之类的比较,所有这些都使用类似于原型的类似WinForms的原始对象模型由Cocoa使用。
答案 7 :(得分:0)
在我的日常工作(一家知名的微处理器公司),我们使用Java,Eclipse RCP和Java OpenGL开发复杂的工程应用程序。性能很好 - 我们可以轻松获得数百万个多边形/秒和高达100帧/秒。 Eclipse中的SWT小部件足够快,我们不必使用JOGL渲染任何自定义控件。
我有一套教程,展示了如何开始使用这种编程。该系列以http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/开头。