WPF 概述
WPF 全称是:Windows Presentation Foundation,直译为Windows表示基础。WPF是专门为GUI(Graphic User Interface)程序开发设计的。
在过去很多年,用于GUI开发的技术一直都在改进。不管是Windows Form,还是Visual Basic 6等等,在底层都是使用Windows的 User32,GDI/GDI+ 这2个部分来构建用户界面。而WPF中,底层的图形技术不再是GDI/GDI+ ,而是DirectX。不管是用WPF绘制简单的文本框、按钮,还是到复杂的3D图形效果,都是采用DirectX完成的。
如果要保证在WPF中获得硬件加速功能,必须保证为显卡安装了本地的WDDM(Windows Display Driver Model)驱动。如果你是Windows Vista,或者Windows 7 已经以上版本,就不用担心这个功能的缺失,系统已经集成了WDDM。
WPF还有一个重要的特征就是分辨率的无关性:WPF可以根据系统的DPI设置,非常灵活的放大或者缩小内容,以适应所有的显示器和显示选择。可以看看http://www.wpflearningexperience.com/?p=41这个地址的讨论。
下面来看看WPF的体系结构:

PresentationFramework:包含了WPF顶层的类型,比如窗口、面板等。还实现了高层的抽象,如样式。
PresentationCore:包含了基础类型,如UIElement类和Visual类。
WindowsBase:DispatcherObject和DependencyObject都在其中定义。
milcore:是非托管代码实现的。是WPF渲染系统的核心,将可视化元素转换为DirectX所期望的三角形和纹理。可以看出是WPF的一部分,但是同时也是操作系统的一个核心组件。
DirectX:WPF所有的的可见元素都是由他进行创建。
User32:仍被作为WPF的一部分,仅作为决定程序占有桌面的那一部分。
下面来看看WPF的类图:

DispatcherObject:WPF使用的是STA(single-thread affinity)模型的。不能在线程里面直接更新用户界面,通常需要使用线程同步上下文。WPF有专门的线程模型,后面有机会再讲到。
DependencyObject:通过继承该类,获得对依赖属性的支持。
Visual:任何继承自该类的类都可以在界面上显示出来,如不想使用高级的WPF特性,可以使用该类。
UIElement:为WPF提供LIFE支持(Layout、Input、Focus、Event)。属于WPF的核心级别。
FrameworkElement:是 WPF 框架级别实现类,该类建立在 UIElement 基础上,并添加了与 WPF 框架级别的特定交互。并添加了更多的布局特征,样式支持,动画支持等。
Shape:基本的形状类。包括Rectangle、Ellipse、Line等。
Panel:所有布局容器的基类。包括StackPanel、DockPanel、WarpPanel、Grid、Canvas等。
Control:WPF中,所有可视化内容都被称为元素;只有少部分元素才能称为控件;控件是那些能够接收焦点并于用户交互的元素。记住这一点很重要。该类中最重要的是提供了控件的模板支持。
ContentControl:所有单一内容的控件的基类。单一内容是指,只能有一个顶级元素,不能同时存在多个。
ItemsControl:所有显示选项集合的基类。如ListBox、TreeView等。
更详细的类层次结构可以看:http://blogs.interknowlogy.com/2007/05/02/wpf-class-library-reference-poster/
WPF 概述的更多相关文章
- WPF概述
一.概述 WPF(Windows Presentation Foundation,视窗展示[呈现.展现.显示.表示]基础)是Windows的新一代图形子系统,他为开发人员提供了统一的编程模型,可用于构 ...
- WPF学习(1)WPF概述
WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于NET Framework 3.0的一部分.它提供了统一的编程模型 ...
- WPF概述(硬件加速及分辨率无关性)
一.名词解释 WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具. 大部分程序都是多层架构的,一般至少包含三层 ...
- (1)WPF概述
一.wpf特点 winfrom使用GID/GID+ 图形引擎,wpf使用directx的图形引擎 通过directx提供硬件加速 类型web的布局模型 丰富的绘图模型.文本模型, 支持音频视频 可创建 ...
- WPF编程宝典(Pro wpf in c# 2012)(文摘)
第一部分 基础知识 第1章 WPF概述 第2章 XAML 第3章 布局 第4章 依赖项属性 第5章 路由事件 第二部分 进一步研究WPF 第6章 控件 第7章 Application类 第8章 元素绑 ...
- WPF UI布局之概述
在线演示:http://v.youku.com/v_show/id_XNzA5NDk2Mjcy.html 清晰版视频+代码下载:http://115.com/lb/5lbeer0m9lad 一.简单介 ...
- wpf动画概述
http://msdn.microsoft.com/zh-cn/library/vstudio/ms752312(v=vs.100).aspx Windows Presentation Foundat ...
- WPF六个控制概述
在线演示:http://v.youku.com/v_show/id_XNzA0NjU1Mjk2.html 清晰版视频+代码下载:http://115.com/lb/5lbcftnrfo9s 一.简单介 ...
- WPF中的导航框架(一)——概述
有的时候,我们需要一个支持页面跳转的UI,例如文件浏览器,开始向导等.对于这样的界面,简单的可以使用ContentControl + ContentTemplateSelector的方式来实现,但是有 ...
随机推荐
- Android自定义View,高仿QQ音乐歌词滚动控件!
最近在以QQ音乐为样板做一个手机音乐播放器,源码下篇博文放出.今天我想聊的是这个QQ音乐播放器中歌词显示控件的问题,和小伙伴们一起来探讨怎么实现这个歌词滚动的效果.OK,废话不多说,先来看看效果图: ...
- 从wordcount 开始 mapreduce (C++\hadoop streaming模式)
序:终于开始接触hadoop了,从wordcount开始 1. 采用hadoop streamming模式 优点:支持C++ pathon shell 等多种语言,学习成本较低,不需要了解hadoop ...
- poj1328解题报告(贪心、线段交集)
POJ 1328,题目链接http://poj.org/problem?id=1328 题意: 有一海岸线(x轴),一半是陆地(y<0).一半是海(y>0),海上有一些小岛(用坐标点表示P ...
- [转]Asp.Net MVC 扩展联想控件
本文转自:http://www.cnblogs.com/bright-lin/archive/2013/02/06/MVC_SuggestBox.html 在web中,为改善用户体验,我们常会将一些文 ...
- zoj 2676 网络流+01分数规划
思路: 这题的结论得要看amber的论文,结论就是将求f(x)/b(x)最小转化为求min(f(x)-b(x)*λ),其中x为S集的解空间,f(x)为解的边权和,b(x)为解的边数, λ=f(x)/b ...
- Linux时间函数
一.时间编程 1.核心理论 (1).时间类型 2.函数学习 (1).获取日历时间 函数名:time 函数原型:time_t time(time_t *t) 函数功能:获取当前日历时间 所属头文件:&l ...
- Git基本命令和GitFlow工作流
本篇博客讲解了git的一些基本的团队协作命令,和GitFlow工作流指南 git 团队协作的一些命令 1.开分支 git branch 新分支名 例如,在master分支下,新开一个开发分支: git ...
- Android--简单的三级菜单
关于这个菜单应该在很多播放器应用里面可以看见,直接先上两张效果图吧,一张是该Demo的效果图,一张是优酷手机客户端的效果图. ...
- visual studio 2015预览版系统需求
visual studio 2015预览版的系统需求跟visual studio 2013的一样. 支持visual studio 2015 preview的操作系统:Windows 8.1(x86 ...
- jquery 事件委托绑定click的使用方法
直接绑定ul的click事件 代码如下 复制代码 $("ul").click(function(e) 例子 代码如下 复制代码 $(function(){ //$(" ...