使用复杂的GUI编写跨平台应用程序

时间:2010-07-10 10:50:26

标签: c# c++ wpf opengl jogl

我想开发一个带有复杂GUI的应用程序(带动画的组合框,带样条的图表,透明层......)。我有很好的C#2.0经验,而且我正在学习WPF,但我读到了,遗憾的是,没有计划将WPF移植到Mono。

  • 如果我坚持 C#并使用 OpenGL(通过OpenTK创建自定义GUI控件,我觉得这将是一项艰苦的工作(与GTK#集成,调试,难以设计表格)。

  • 我可以使用 Java(使用JOGL),但我对此并不熟悉,而且我不了解性能问题。

  • 最后一个选项是 C ++ ,但我必须做一个大的修订版(自上次使用它以来的几年),我觉得很难开发用C ++编写的GUI和便携式应用程序。 (也许我错了!不过,我很害怕用这种语言开发这么复杂的应用程序。)

你有什么建议?我最好选择C#+ OpenTK,Java + JOGL还是返回C ++?

8 个答案:

答案 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是一个糟糕的选择,原因有两个:

  1. Mono总是落后.NET几步。
  2. Mono不支持WPF,因此开发GUI的唯一方法是使用类似GTK#的东西。
  3. 我的个人意见 - 使用C ++。它会给你非常好的便携性和独立性。

    您有两种选择:

    • Qt4 - 非常好的GUI工具包,使GUI开发变得非常简单,并且非常便于携带。
    • GTKmm - 也是非常好的工具包,但在Windows上感觉不太自然。

    此外,Java还提供了JDK附带的Swing工具包,并且可以在所有Java平台上使用,甚至是非常奇怪的OpenVMS。

答案 6 :(得分:0)

Silverlight可在Windows / Mac / Linux和某些手持设备上运行,并且正在移植到更多手持设备上。我相信Silverlight最终会被移植到每个流行的设备上。

Silverlight是:

  1. 比Flex / Flash / Air更强大,更强大。
  2. 比Qt强大得多。
  3. 比GTK +或GTK#更加强大。
  4. 比JOGL更加强大。
  5. 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/开头。