WPF框架(转)
来源:互联网 发布:网络搜索引擎有哪些 编辑:程序博客网 时间:2024/05/16 07:28
WPF可以认为是MS利用原有.NET框架的一些特色,加上DirextX的产物。将原有的编程模型统一化.
我们来看看WPF的运行机制.
那么我们现在来分析一下WPF的运行过程吧。
首先从第一个方块说起:WPF的进程会加载四个程序集,Kernel,User32,DirectX,milcore.他们对原有的CLR进行了扩展。我们看看他们分别起什么作用。Kernel,它负责控制和管理与图形驱动相关的最底层任务等。在Kernel之后也是两个比较底层的模块。其中,User32负责确定显示窗口及其在屏幕中的位置状态等,其并不参与常见控件的呈现。DirectX负责呈现窗口和内容等。milcore是WPF的核心部分,它主要起到中间人的作用,以实现WPF与DirectX的通信(非受管模块)。
第二个方块:由CLR来加载WPF的另三个程序集WindowsBase,PresentationFramework和PresentationCore,它们都是受管模块。我们下边要讲解的WPF主要类型,基本都来自于这三个dll。
WindowsBase是WPF API基础架构的核心类型。
PresentationCore主要包括WPF的一些基本类型,例如UIElement,Visual等。它们是PresentationFramework所包括元素的基类。
PresentationFramework主要定义WPF的窗口、面板、样式等高层WPF类型。
第三个方块:编译好机器码以后,就可以执行指令了,这里会创建Systemdomain,它包含了SharedDomain和默认的应用程序域,也就是当前应用程序自己的域,前面我们说过一个.net进程中可以包含多个默认的应用程序域,而这些应用程序域都会用到mscorlib.dll,如果每个默认的应用程序域中都去加载它,那么无疑会造成内存的浪费,所以就有了SharedDomain,它是用来放所有Domain都要用到的Dll,这样就避免了浪费内存.也优化了加载的速度.
第四个方块:这时候默认的应用程序域,就会去找到WPF项目中的Main方法.
OK明白了WPF的启动过程,我们来看看WPF程序中要用到的主要类的层次关系:
DispatcherObject: WPF中有许多类继承自DispatcherObject,DispatcherObject提供了处理同步和并发的基本构造。WPF建立在dispatcher提供的消息系统之上。WPF的dispatcher使用User32消息来实现线程间调用。
DependencyObject :构建WPF的一个主要思想是属性优先于方法和事件。WPF提供了丰富的属性系统,其核心是DependencyObject。
Visual:该类的主要作用是为WPF提供2D呈现支持,主要包括输出显示,坐标转换,区域剪切等。
UIElement:该类继承自Visual类,是构建WPF元素和基本呈现特征的基类,其中定义很多与输入和焦点有关的特性,例如键盘事件,鼠标,还包括一些与WPF事件模型有关的API。
FrameworkElement:继承了UIElement类,而且还添加了一些功能,例如,布局定义、逻辑树、对象生命周期事件、支持数据绑定和动态资源引用、支持样式和动画。
WPF中的控件,图形操作,动画多媒体,以及3D效果就是由下面4个类的派生类来完成的:
1Control是创建自定义应用程序控件的基类。可以重写Control类所提供的属性,方法,事件等,为自定义控件添加自定义逻辑。 构建WPF应用程序页面的window类就派生自它.还有button,TextBox等控件也派生自他。
2Shape:WPF 中呈现二维矢量图形的基础类。有 Line、Polyline、Polygon、Path、Rectangle 和 Ellipse等子类。可从 Shape 类进行派生以实现自定义矢量图形基元。从 Shape 派生是确保这些自定义基元使用 WPF 布局系统的协议的最简单方法。
3Freezable:WPF中对动画和多媒体的操作类,基本上都是派生自它,它实现了多种生成深层克隆的方法。
4Visual3D:提供可视三维对象通用的服务和属性,其中包括命中测试、坐标转换和边界框计算。与Visual类一样,只不过是3D的基础类.
- WPF框架(转)
- WPF MVVM框架(转)
- WPF框架剖析(从头开始自己写WPF框架)
- WPF Summary:WPF的框架
- WPF知识框架
- Wpf 总结(转)
- WPF OCX(转)
- WPF简单导航框架(Window与Page互相调用)
- 构建类似Office 2007框架的WPF应用程序(1)
- 构建类似Office 2007框架的WPF应用程序(2)
- 构建类似Office 2007框架的WPF应用程序(3)
- 构建类似Office 2007框架的WPF应用程序(4)
- 构建类似Office 2007框架的WPF应用程序(5)
- WPF框架剖析,从头开始自己写WPF框架
- Caliburn笔记(1)(wpf框架)
- Caliburn笔记-Presenter(wpf框架)
- C#界面框架WPF总结
- wpf数据验证(转)
- [maya学习笔记(4)] 物体的创建以及属性
- 失落的一角遇见大圆满
- 如何打开USB调试-连按7次我醉了
- ajax无刷新表单提交、验证码的使用
- 使用正则表达式为手机号码或身份证号码打星号
- WPF框架(转)
- 6.8-4 聊天的第三方 环信 easemob.com
- 2.0.3 新浪的接口文档的规范
- linux jdk 路径设置
- 6.8.1 使用ShareSDK 实现第三方分享,登录 微博,
- 【SDOI2009】【BZOJ1880】Elaxia的路线
- uc模拟器,7.4UC电脑版
- 使用DirectShow采集图像
- php正则表达式及字符串处理函数