内置硬件加速
winform的渲染使用User32和GDI /GDI+
User32:该部分为许多元素(如窗口,按钮和文本等)提供熟悉的windows外观。
GDI /GDI+:该部分为渲染简单形状,文本以及图像提供绘图支持,但是增加了复杂度(通用性较差)。
wpf的渲染使用DirectX,DirectX使用GPU加速
DirectX:显卡直接渲染的高度元素,如纹理和渐变,效率更高。
分辨率无关特性
wpf能够根据系统dpi的变化,自动计算出一个合适的窗口大小,包括窗口中的控件,及控件上的文字,所以若界面中使用图片,那么劲量使用矢量图,这样就能在缩小或放大时不失真。不同分辨率尺寸大小保持布标
体系结构
PresentationFramework.dll,包含WPF顶层的类型,包括哪些表示窗口、面板以及其他类型控件的类型。它还实现了高层编程抽象,如样式;开发中使用的大部分类都来自这个程序及;
PresentationCore.dll,包含基础类型,UIElement类和Visual,所有形状类和控件类都继承自这两个类;
WindowsBase.dll,包含更多基本要素,如DispatcherObject和DependencyObject类,这两个类引入了依赖属性;
milcore.dll,有时候称为“图形托管”引擎,是WPF渲染系统的核心,也是媒体集成层的基础;
类层次结构
1、DispatcherObject类
通过继承自该类,用户界面中的每个元素都可以检查代码是否在正确的线程上运行,并能通过访问调度程序,为用户界面现成封送代码。
2、DependencyObject类
通过继承该类,WPF类可以获得对依赖属性的支持。
3、Visual类
WPF窗口中显示的每个元素本质上都是Visual对象。可以该类视为绘图对象,其中封装了绘图指令、如何执行绘图的附加细节,如透明度、裁剪以及变换位置,以及基本功能(命中测试);该类还在托管的WPF库和渲染桌面的milcore.dll程序及之间提供了链接,任何继承自该类的类都能在窗口上显示出来。因此,可以直接对该类进行编程也可以创建轻量级的用户界面。
4、UIElement类
该类增加了对WPF本质特征的支持,如布局、输入、焦点、和事件。
5、FrameworkElement类
该类是WPF核心继承树种的最后一站,实现了一些全部由UIElement类定义的成员。例如,UIElement为WPF布局系统设置了基础,但FrameworkElement类提供了支持它的重要属性,如HorizontalAlignment和Margin属性;UIElement类还添加了对数据绑定、动画以及样式等核心功能的支持。
6、shape类
基本的形状类。
7、Control类
是可以与用户进行交互的元素,包括TextBox、Button、ListBox等,该类为设置字体以及前景色与背景色提供了附加属性,并且支持模板,在WPF中可视化的被称为元素,只有和用户交互的称为控件,Panel类是所有布局容器的基类,定义在Control类中,但是不被认为控件。
8、ContentControl类
是所有具有单一内容的空间的基类,包括简单的标签乃至窗口的所有内容,该空间中的单一内容可以是普通字符串乃至具有其他形状和空间组合的布局面板。
9、ItemsControl类
是所有显示选项集合的控件的基类,如ListBox和TreeView控件。
10、panel类
是所有布局容器的基类,布局容器是一个可以包含一个或多个子元素、并按特定规则对子元素进行排列的元素。
WPF工具包
在将新的控件集成到.net平台的wpf库之前,通常先将控件放到被称为wpf工具包的microsoft下载中。例如wpf没有提供任何制图工具,但是wpf工具包提供了一套控件用于创建柱状图,饼状图,气泡图,散点图以及线型图。