近年来,微软已经开发了众多的GUI开发工具包(原始的C/C++/Windows API开发、VB6\MFC,等等)用以创建桌面可执行程序。这些GUI API各自都提供了用以代表GUI应用程序基本要素的代码库。,这些基本要素包括主窗体、对话框、控件、菜单系统及其他一些必要的因素。随着.NET平台的发布,Windows Forms API开发模型凭借其简单而又强大的对象模型,快速成为UI开发的首选。
虽然许多功能完整的桌面应用程序已经通过使用Windows.Forms.dll.和System.Drawing.dll没有对创建完全成熟的桌面应用程序所需的许多技术提供直接的支持。为了说明这一点,考虑下在WPF发布之前进行GUI开发时(如在.NET2.0下)的混乱局面。
表21-1 .NET2.0为所需功能提供的解决方案
所要求的功能 NET2.0解决方案
构建带控件的表单 Windows Forms
2D图形支持 GDI+(System.Drawing.dll)
3D图形支持 DorectX API
对流视频的支持 Windows Media Player API
对流文档的支持 编程操作PDF文件
正如你所看到的,Windows Forms 开发人员必须引入来多种不同API和对象模型的类型。尽管在使用这些不同种类的API时,可能在语法上看起来比较相似(毕竟都是C#代码),但你也可能承认每种技术都需要截然不同的思维方式。比如,使用DirectX创建三维呈现动画时所需要的技巧,与将数据绑定到网格时所需要的技巧完全不一样。肯定地讲,要一个Windows Forms编程人员掌握所有这些迥异的API是非常困难的。
虽然许多功能完整的桌面应用程序已经通过使用Windows.Forms.dll.和System.Drawing.dll没有对创建完全成熟的桌面应用程序所需的许多技术提供直接的支持。为了说明这一点,考虑下在WPF发布之前进行GUI开发时(如在.NET2.0下)的混乱局面。
表21-1 .NET2.0为所需功能提供的解决方案
所要求的功能 NET2.0解决方案
构建带控件的表单 Windows Forms
2D图形支持 GDI+(System.Drawing.dll)
3D图形支持 DorectX API
对流视频的支持 Windows Media Player API
对流文档的支持 编程操作PDF文件
正如你所看到的,Windows Forms 开发人员必须引入来多种不同API和对象模型的类型。尽管在使用这些不同种类的API时,可能在语法上看起来比较相似(毕竟都是C#代码),但你也可能承认每种技术都需要截然不同的思维方式。比如,使用DirectX创建三维呈现动画时所需要的技巧,与将数据绑定到网格时所需要的技巧完全不一样。肯定地讲,要一个Windows Forms编程人员掌握所有这些迥异的API是非常困难的。