wpf是什么
wpf(windows presentation foundation)是用于windows的现代图形显示系统。
wpf与win32,mfc
与win32,mfc相比,wpf使用的是c#,而不是C/C++。另外主要引入 了“内置硬件加速”,“更高级的api”和“分辨率无关”等创新功能。
内置硬件加速
在wpf问世之前的15年里,windows平台的开发人员一直使用着本质相同的显示技术,主要是windows应用程序都依靠User32和GDI/GDI+来创建用户界面。尽管从win32到mfc到.net,与底层这两块交互的api变得越来越简单,更加高效,但这些底层系统组件当初在设计时的限制却是一直无法突破的。
直到后来微软推出了DirectX,经过数年的发展DirectX已经越来越强大,但DirectX具有很高的复杂性,导致少有商业软件使用DirectX开发,似乎DirectX已经成了游戏开发的专有。
而Wpf的出现彻底改变了windows平台应用开发的这种局面。wpf底层的显示技术不是GDI/GDI+,而直接是DirectX。这样不管是复杂的三维图形还是简单的几个文本,wpf都是通过DirectX管线完成绘图。即使在普通的桌面软件上也可以带来炫酷的效果。
更高级的api
wpf还引入了一整套面向开发人员的高级服务。
- 类似Web的布局模型
- 丰富的绘图模型
- 丰富的文本模型
- 作为首要编程概念的动画
- 支持音频和视频媒体
- 样式和模板
- 命令
- 声明式用户界面
- 基于页面的应用程序
分辨率无关性
利用DPI(dot per inch)的概念,wpf根据系统dpi进行缩放,并不根据物理显示系统的dpi进行缩放,灵活得放大/缩小显示内容,以使其适合所用的显示器和显示选择,做到分辨率无关性。
[物理单位尺寸] = [设备无关单位尺寸] x [系统DPI]
控件无固定外观
在wpf中任何控件外观都是可以定制的,wpf只定义了控件的功能,而没有定义其“外观”
声明式用户界面
XAML的引入,让很多界面很为可以直接在xaml中定义,而不用编写C#代码。