Application GUI Development Platform

Based on the background of C ++ and MFC, is there any better (supportive / customizable) platform for developing a graphical application interface?

We develop industrial applications (machine vision), where:
-Process is critical (mainly image processing in CPU atm, but GPU is next)
- Lower hardware compatibility (integrated PCI device, frame capture device, motion card)
Real-time data visualization (images / statistic graph)
-Football card includes network access for distributed processing and remote access.

The cross platform will not be important for us, since the system works in a controlled environment (the client only cares about whether the system works, and they got their result).

There are also problems with migration costs (3-way dependencies, training costs for developers and maintenance staff)

Edit
Clarification on the "image processing" mentioned above:
I mean "image" (two-dimensional information in a matrix format), and not graphic (usually three-dimensional). We currently use a third-party image library (for processing a spatial domain such as segmentation, OCR / OCV, morphology, pattern matching) and include our result logic.

+4
source share
3 answers

What I did before when developing a scientific application in C ++ is that he will fully develop it under a console application. The console application will be able to receive various commands from the user's keyboard and perform the corresponding action. For instance:

image_processor > load input.png image_processor > save out.png 

It’s good that I can concentrate on developing my algorithm 100% without worrying about how to fit into the graphical interface. Either they are MFC or QT.

At the end of the day, instead of entering the keyboard input stream, I just connect the STDIN console application to the communication channel of the GUI application. My GUI application will then be a string command to speak and receive feedback from the console application.

Guess what I'm using for GUI design? Java Swing :)

I assume that I am using the Unix approach. See what Joel says:

Suppose you took a Unix programmer and a Windows programmer and asked them to create the same end-user application. A Unix programmer will create a command-line kernel or a text kernel, and sometimes, as an idea, build a graphical interface that controls this kernel. Thus, the basic operations of the application will be available to other programmers who can call the program on the command line and read the results in text. A Windows programmer, as a rule, starts working with a graphical interface, and sometimes, as an idea, adds a scripting language that can automate the operation of the GUI interface.

I understand that taking the Windows approach will give you a more user friendly application. However, if your main task is to get a complex algorithm written well and the GUI is secondary, I would suggest that you go for a Unix approach.

+2
source

If you need high-performance graphics processing, then your best bet is C ++ / DirectX or C ++ / OpenGL. C ++ / DirectX is perhaps more convenient to maintain.

However ... depending on the actual processing you are doing, you might consider moving parts of your interface to a more convenient platform .. The .NET framework / WPF can do some pretty interesting things with a good implementation of templates like MVVM, and can be surprisingly maintainable. Also the network side; WCF abstracts many common protocols from code, making for cleaner and more convenient network code. You can even write your level of translation between unmanaged processing and managed level in C ++ / CLI.

However, all this is very subjective. I can’t tell enough about your marker points to judge whether you can offload part or even all of your processing in .NET / C #. It is worth considering, but my gut tells me that this is probably not the best choice.

+3
source

As a Qt fan, I would refuse to mention this.

  • Although cross-platform is not one of your criteria, it is a good bonus.
  • Qt also has good video hardware support via OpenGL (I'm not sure if this will help with hardware capture, though).
  • It is open source, so you can get your hands as dirty as you like.
  • It is very customizable.
  • He is actively developing and has a large community.
  • MFC programmers should not have big speed issues.

You should also read some of these questions and answers:

Good C ++ GUI Library for Windows https://stackoverflow.com/questions/610/gui-programming-apis

+3
source

All Articles