WPF编程-WPF体系结构
WPF简介
Windows Presentation Foundation(WPF)是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于 WPF。微软还提供了专门的界面开发语言XAML(Extensible Application Markup Language,可扩展应用程序标记语言),使得界面描述代码和程序代码得以分开,从而提高了开发效率并有利于团队开发。
Windows Presentation Foundation https://msdn.microsoft.com/zh-cn/library/ms754130(v=vs.110).aspx
WPF中的一些重要组件
WPF使用多层体系结构。在顶层,应用程序与完全由托管C#代码编写的一组高层服务进行交互。
- PresentationFramework.dll包含WPF顶层的类型,包括哪些表示窗口、面板以及其他类型控件的类型。它还是想高层编程抽象,如样式。
- PresentationCore.dll包含了基础类型,如UIElement类和Visual类,所有形状类和控件都继承自这两个类。
- WindowsBase.dll包含了更多的基本要素,如DispatcherObject类和DependencyObject类,这两个类引入了依赖属性。
- milcore.dll是WPF渲染系统的核心,也是媒体集成层(Media Integration Layer,MIL)的基础。其合成引擎将可视化元素转换为Driect3D所期望的三角形和纹理。
- WindowsCodecs.dll是一套提供图像支持的低级API,例如处理、显示以及缩放位图和JPEG图像。
- Direct3D是一套低级API,WPF应用程序中的所有图形都由它进行渲染。
- User32用于解决哪些程序实际占有桌面的哪一部分。但在WPF中,它不负责渲染通用控件
类层次结构
WPF核心命名空间以System.Windows开头(如System.Windows、System.Windows.Controls、....)。下图为WPF中比较重要的几个类。
【System.Threading.DispatcherObject】
WPF应用程序使用单线程(STA)模型,整个用户界面由单个线程拥有,即从另一个线程与用户界面元素进行交互是不安全的。通过继承DispatcherObject类,用户界面中的每个元素都可以检查代码是否在正确的线程上运行,并能通过访问调度程序为用用户界面线程封送代码。
【System.Windows.DependencyObject】
在WPF中,主要是通过属性和屏幕上的元素进行交互。通过继承DependencyObject类,WPF类可获得对依赖项属性的支持
【System.Windows.Media.Visual】
在WPF窗口中显示的每个元素本质上都是Visual对象。可将Visual类视为绘图对象,其中封装了绘图指令、如何执行绘图的附加细节(如透明度、剪裁以及变换设置)以及基本功能(如命中测试)。任何继承自Visual的类都能够在窗口中显示出来。
【System.Windows.UIElement】
UIElement类增加了对WPF本质特征的支持,如焦点、布局、输入和事件。
【System.Windows.FrameworkElement】
FrameworkElement类实现了一些全部由UIElement类定义的成员。如UIElement为布局设置了基础,FrameworkElement类提供了支持它的重要属性(如Margin、HorizontalAlignment)
【System.Windows.Controls.Control】
Control与用户进行交互的元素。
【System.Windows.Controls.ContentControl】
ContentControl类是所有具有单一内容的控件的基类。
【System.Windows.Controls.ItemsControl】
ItemsControl类是所有显示选项集合的控件的基类。如ListBox、TreeView...
【System.Windows.Controls.Panel】
Panel类是所有布局容器的基类。
WPF编程-WPF体系结构的更多相关文章
- WPF编程之找不到资源mainWindow.xaml
原文: WPF编程之找不到资源“window1.xaml”之谜 因为将启动窗口移动到了一个新建的文件夹中,启动调试时报找不到资源mainWindow.xaml,原来是App.xaml里面设置的启动窗口 ...
- WPF编程,获取句柄将外部程序嵌入到WPF界面。
原文:WPF编程,获取句柄将外部程序嵌入到WPF界面. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details ...
- WPF编程 ,TextBlock 显示百分数值的一种简单方法。
原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...
- WPF编程,通过Double Animation动态旋转控件的一种方法。
原文:WPF编程,通过Double Animation动态旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/art ...
- WPF编程,通过Double Animation动态更改控件属性的一种方法。
原文:WPF编程,通过Double Animation动态更改控件属性的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/a ...
- WPF编程,通过【帧】动态更改控件属性的一种方法。
原文:WPF编程,通过[帧]动态更改控件属性的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/detail ...
- WPF编程,通过Double Animation同时动态缩放和旋转控件的一种方法。
原文:WPF编程,通过Double Animation同时动态缩放和旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_4330793 ...
- WPF编程,通过Double Animation动态缩放控件的一种方法。
原文:WPF编程,通过Double Animation动态缩放控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/art ...
- WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法。
原文:WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_4330 ...
随机推荐
- hdu1561 The more, The Better 树形DP+分组背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1561 思路: 典型的树形背包题目: 定义dp[i][j]表示以i为根节点,攻打j个城堡的获得的财宝的最 ...
- 浅谈mmap()和ioremap()的用法与区别
一.mmap()mmap()函数是用来将设备内存线性地址映射到用户地址空间.(1)首先映射基地址,再通过偏移地址寻址:(2)unsigned char *map_cru_base=(unsigned ...
- JAVA栈帧
简介 Java栈是一块线程私有的内存空间.java堆和程序数据相关,java栈就是和线程执行密切相关的,线程的执行的基本行为是函数调用,每次函数调用的数据都是通过java栈来传递的. Java栈与数据 ...
- jquery源码 Callback
工具方法.对函数的统一管理. jquery2.0.3版本$.Callback()部分的源码如下: // String to Object options format cache var option ...
- 11、借助POI实现Java生成并打印excel报表(2)
11.POI打印功能 11.1.常用模块形式: HSSFPrintSetup printSetup = sheet.getPrintSetup(); printSetup.setVResolution ...
- .NET中webservice如何使用,调用
webservice 只是"面向服务"编程的一种方式,现在把所有的方式都合在一起,就叫做WCF,,,,,, 1.创建 webservice服务,在web项目中添加"web ...
- html学习笔记 - 标签
单标签 : <!DOCTYPE html> 解析类型标签 <!-- xxx --> 注释标签 <br /> 换行标签 <hr /> 分割线标签 < ...
- 003---hibernate主要接口介绍
Hibernate可以访问JNDI.JDBC.JTA JNDI(Java名称和目录接口):主要管理我们对象,特别是EJB应用,它会把所有EJB应用加入到JNDI这棵树上,Tomcat连接池也是把对象注 ...
- 开涛spring3(6.8) - AOP 之 6.8 切面实例化模型
所谓切面实例化模型指何时实例化切面. Spring AOP支持AspectJ的singleton.perthis.pertarget实例化模型(目前不支持percflow.percflowbelow ...
- git底层原理(一)
1.git仓库的初始化: 输入git init指令,会看到在当前空目录下创建了一个.git隐藏文件夹,这个就是git实现一切版本管理的关键.进入到.git目录下,里面包含三个文件(config/des ...