图形界面编程的几种实现方式
2016-02-07 09:00阅读:
1.C++
C++以其强大的运行效率和更接近底层的优势成为使用率最高的语言之一。C++本身不包含专门用于写图形界面的库。用C++写图形界面主要有三种方式:
一是调用绘图函数直接绘制,即所谓的Win32
API实现方式。这种方法比较底层,也十分复杂,编写难度大、效率低,因此应用很少。
二是调用第三方的图形界面类库实现。常用的类库主要有两种:MFC和Qt。
①MFC(Microsoft
Foundation
Classes)是微软公司实现的一个C++类库,封装了大量的Windows
API函数。这种技术运行效率高,用的人也很多;但是比较古老,界面不太美观,而且代码比较难调试。
②Qt是一个由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。支持跨平台特性,是很多Linux程序员的首选。Qt相比于MFC更加灵活,也比MFC更容易。究其原因,在于Qt把自身的实现机制隐藏得很深,相比于MFC,初学者可能更不容易理解其中的机制。
三是与微软.NET平台结合,即所谓的C++/CLI。
使用C++/CLI编写图形界面,可以在Visual
Studio中用“拖控件”的可视化方式实现(这个后面还会提到)。但值得一提的是,.NET平台并不是专门针对C++开发的,C++/CLI的出现只是为了使习惯于C++的程序员进行.NET开发,因此从这个角度讲,如果使用.NET开发图形界面程序,专门针对.NET平台开发的C#是比C++/CLI更优先的选择。此外,采用C++/CLI的程序将带有.NET的特性,如只能在安装有.NET
Framework的Windows平台上运行等。这是其相对于Qt的劣势。
2.C#
C#是微软公司发布的一种面向对象的、运行于.NET
Framework之上的高级程序设计语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性,综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
简而言之,C#代码优雅,容易上手。结合Visual
Studio,可以用所见即所得的方式用鼠标设计界面,相应的代码可以自动生成,而不必用键盘输入设计界面的代码,具有较强的图形界面开发能力。但使用C#编写的程序只能在安装有.NET
Framework的Windows平台上运行,有时候会有兼容性问题(比如在Win7下开发的程序到XP下可能就运行不了了)。
在Visual
Studio中用C#写图形界面有两种方式:Winform和WPF。Winform使用起来很方便,界面与系统一致;但WinForms
的设计仅仅是对系统的 Win32 API 做了一层薄薄的封装,UI
设计方面束缚比较大——老老实实套用内置控件倒还好,一旦要做些许“创新”,开发复杂度就陡然增大。WPF是在Winform之后开发的一种技术,比Winform更强大、灵活,缺点是效果太炫的时候非常吃内存,性能不太好。
3.Java
Java是Sun公司开发的跨平台编程语言,在网络和移动端领域应用极为广泛,相比之下,开发桌面应用程序并不是Java的强项。Java拥有AWT,Swing和SWT(第三方)三种图形界面类库。SWT对AWT和Swing老旧的界面做了很大改进,使用Eclipse的插件Visual
Editor也可以实现可视化开发。但其相对于Visual
Studio仍然显得不够强大。此外,Java程序只能编译成*.jar格式,要在没有安装JRE(Java
Runtime
Environment)的Windows系统下运行,还需要把jar转换成exe格式,这一方面增大了体积,另一方面也降低了运行的效率。