2

我想开发一个具有复杂 GUI 的应用程序(带有动画的组合框、带有样条的图表、透明层……)。我在 C# 2.0 方面有很好的经验,我正在研究 WPF,但我读到,不幸的是,没有将 WPF 移植到 Mono 的计划。

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

  • 我可以使用Java (with JOGL),但我对它不是很熟练,而且我不知道性能问题。

  • 最后一个选项是C++,但我必须做一个大的修改(自上次使用它以来的几年),我发现很难用 C++ 开发 GUI 和可移植应用程序。(也许我错了!不过,我还是很害怕用这种语言开发如此复杂的应用程序。)

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

4

8 回答 8

7

我会选择Qt。看看http://qt.nokia.com/products/。如果你害怕 C++(但没有理由害怕),你可以试试 Java Swing。我认为这些是多平台桌面 GUI 开发的最佳选择。

于 2010-07-10T11:13:00.110 回答
4

我会建议 Mono 和 GTK#。使用 .Net 开发应用程序比使用 C++ vanilla 更有效。当然,您必须坚持使用 C# 3.0 和 .Net 2.0(实现了 3.5 中的一些功能,例如 LINQ)。但它仍然给你比 C++ 更多的东西,例如 QT,会给你。

于 2010-07-10T14:50:46.157 回答
1

使用 C# 提高生产力。没有反对 C++,但它有点冗长。至于 GUI 库,我认为 WinForms 曾经在 Mono 上工作。或者,GTK#。

于 2010-07-10T14:59:27.237 回答
0

我不建议使用 wpf,因为它是一个依赖于平台的平台。Silverlight 可能是一个更好的选择。

但是,如果您正在开发 Web 应用程序,jquery 将是一个不错的选择,您也可以考虑使用 adobe flex 和 adobe air;http://www.adobe.com/products/air/

于 2010-07-10T11:02:19.057 回答
0

多平台是否必须包含 iDevices?可以在网络上吗?这是你必须首先回答的 2 个问题。

如果您可以在没有 iPad/iPhone 支持的情况下生活,那么 Flex/Flash/Air 是高度图形化事物的不错选择。它肯定是多平台的,并且很容易集成到网络中。对于这种情况,可能是您最好的选择,但给出的细节有限。

Qt 也可以为您工作,尽管我不能确定它的图形库是否会使其变得容易。我个人从未使用过它,所以其他人必须回答这个问题。但由于它是在 C++ 中的,因此您也可以使用其他库。

对于这种复杂的 GUI,Java Swing 对我来说听起来很粗糙。做一些基本的东西还不错,但如果你期待像 C# 这样的体验,我想你会感到沮丧。当然只是个人意见。

最后,如果它可以是一个 Web 应用程序,为什么不坚持使用 C# 和 Silverlight?.NET 解决方案可能对您很有效,因为您已经在学习它。

于 2010-07-10T11:52:56.260 回答
0

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

银光是:

  1. 比 Flex/Flash/Air 强大得多。
  2. 比 Qt 强大得多。
  3. 可笑地比 GTK+ 或 GTK# 更强大。
  4. 可笑地比JOGL更强大。

Silverlight 具有您要求的所有功能。

Silverlight 与 C# 配合得非常好,C# 是一种比 C++ 更高效的语言。

Silverlight 基本上是 WPF 的一个非常大的子集,所以如果您已经了解 WPF,那么您就已经了解 Silverlight。

除非你绝对需要 iPhone/iPad 支持,否则我认为这个决定是非常明显的。

查看WPF 和 Cocoa的比较,了解 WPF/Silverlight 与 Qt、Flash/Flex/Air 和 GTK# 之类的比较,所有这些都使用类似于 WinForms 的原始对象模型,类似于可可。

于 2010-07-13T06:10:35.073 回答
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/开始。

于 2010-10-25T14:40:04.033 回答
0

首先,不要将 C# 用于任何应该可移植的东西。对于 GUI,Mono 是一个不好的选择,原因有两个:

  1. Mono 总是比 .NET 落后几步。
  2. Mono 不支持 WPF,因此开发 GUI 的唯一方法是使用 GTK# 之类的东西。

我的个人意见——使用 C++。它会给你很好的便携性和独立性。

你有两个选择:

  • Qt4 - 非常好的 GUI 工具包,使 GUI 开发非常容易,并且高度可移植。
  • GTKmm – 也是非常好的工具包,但在 Windows 上感觉不太自然。

此外,Java 具有随 JDK 一起提供的 Swing 工具包,可在所有 Java 平台上使用,甚至是像 OpenVMS 这样非常奇怪的平台。

于 2010-07-10T12:07:16.677 回答