WPF概述
一。概述
WPF(Windows Presentation Foundation,视窗展示【呈现、展现、显示、表示】基础)是Windows的新一代图形子系统,他为开发人员提供了统一的编程模型,可用于构建合并了UI、媒体和文档的丰富Windows智能客户端用户体验。
Windows的图形子系统,经历了从GDI到GDI+再到WPF的发展过程。GDI是Windows1.0(1985年11月)就有的传统图形子系统,GDI+是随Windows XP引入的新式图形子系统,而WPF则是随Windows Visa和.net 3.0 推出的全新DirectX、.Net框架和Xaml,是windows下一代GUI显示系统。
其中,XAML(eXtensible Application MarkupLanguage,可扩展应用程序标记语言),是一种基于XML的用户界面标记语言,用于定义UI元素、数据绑定、事件和其他特性。WPF强调声明式描述,使用XAML是WPF的重要新特性,XAML(从而脚本语言JavaScript)可用于界面设计,这使得界面设计和界面编程可分离开来。
WPF是(3.0以上版本的).Net框架的组成部分,是为托管代码而设计的。.Net 3.0建立.Net 2.0之上,WPF是其四个新组件中最重要的一个.

WPF开发平台构建一个经过扩展的核心编程系统上,可支持一组广泛的应用程序开发功能,包括应用程序模型本身、资源、控件、图形、布局、数据绑定、文档以及安全性。
WPF是下一代显示系统,用于生成能带给用户震撼视觉体验的Windows客户端应用程序。使用WPF,你可以创建广泛的独立应用程序以及浏览器承载的应用程序。
WPF作为.Net框架类型的一个子集存在,这些类型大多数位于System.Windows命名空间。如果你以前使用.Net 框架通过注入Asp.Net和Windows窗体之类的托管技术生成应用程序,那么你应该熟悉WPF的基本编程体验。为了支持某些更强大的WPF功能并简化编程体验,WPF包括了更多编程构造,这些编程构造增强了属性和事件:依赖项属性和路由事件。
二。构成
WPF主要由MIL(Media Integration Layer,媒体集成层)、编解码器、展示核心和展示框架四部分构成。

图中的红色部分是WPF的主要部件,其中的MIL和编解码器合称为milcore(MIL 核心,对应的DLL为micore.dll)是用本地代码编写的非托管组件,目的是实现与DirectX的紧密集成。WPF中的所有显示是通过DirectX引擎完成的,可实现高效的硬件和软件呈现。WPF还要求对内存的执行进行精确控制。而MIL中的组合引擎受性能影响关系大,所以才需要放弃CLR的许多优点来提高性能。WPF的另外两个组件-----展示核心(对应的程序集为PresetationCore.dll)和展示框架(对应的程序为PresentationFramework.dll)则是用托管代码编写的(对应的程序集DLL缺省安装时都位于目录C:\Programe Files\Reference Assemblies\Microsoft\Framework\v3.o\中)。WPF主要编程模型是通过托管代码公开的。在WPF的早期设计阶段,曾有过大量关于如何界定系统的托管组件和非托管组件的争论。CLR型系统等),但这是要付出代价的。
图中的黄色部分是.Net 传统的图形界面,其基础是对平面GDI+的托管封装,用户界面则是Windows窗体,他们都离不开底层的GDI。
图中的其余部分都是Windows的部件。其中深蓝色部分为Windows的传统三大部件-------核心(Kernal)/用户界面(User)/图形(GDI)、GDI+是从Windows XP器引入的部件、DirectX和CLR则是从Windows Visa器引入的系统标准部件(在之前的Widnows版本中DirectX和CLR只是外加模块)。
三。优点
WPF具有以下亮点:
1.新型界面与开发工具-------WPF的开发工具有C#、VB、XAML和JavaScript等。
2.广泛整合-----在传统的Windows和老版本的.Net平台上创建界面丰富友好的(多媒体)应用程序,除标准的2D图形和窗口的控件之外,还需要用到不同的开发接口和技术。而.Net 3.0中的WPF,通过统一的编程模型和紧密整合,可以将各种媒体类型的数据组合在一起展现。
3.统一客户端---------网络的客户端,有传统的C/S(Client/Server)和现代的B/S(Browser/Server,浏览器、服务器)两种类型。前者为操作系统平台的相关的桌面应用程序,虽然界面美观、反映迅速、且交互性强,但是难于开发(需针对不同运行平台开发不同版本)、部署和升级,安装、运行和维护的成本都高。一般
WPF概述的更多相关文章
- WPF 概述
WPF 全称是:Windows Presentation Foundation,直译为Windows表示基础.WPF是专门为GUI(Graphic User Interface)程序开发设计的. 在过 ...
- 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的方式来实现,但是有 ...
随机推荐
- gulp配置browserify多入口
需要 var es = require('event-stream'); gulp.task('browserify', function(){ var files = [ { fpath: './j ...
- C语言连接数据库
举个例子,连接SQL: // 打开数据库 strDBClass.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet ...
- 【Java】怎么回答java垃圾回收机制
(1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象 ...
- 【贪心】Codeforces 704B & 705D Ant Man
题目链接: http://codeforces.com/problemset/problem/704/B 题目大意: 给N个点,起点S终点T,每个点有X,A,B,C,D,根据I和J的X坐标可得I到J的 ...
- HDOJ 3466 Proud Merchants
Problem Description Recently, iSea went to an ancient country. For such a long time, it was the most ...
- openssl生成RSA格式,并转为pkcs8格式
原文地址:http://www.thinkingquest.net/articles/391.html?utm_source=tuicool 支付宝接口开发相关:openssl 加密工具 支付宝“手机 ...
- Apache multiple domains setup
Running several name-based web sites on a single IP address. Your server has a single IP address, an ...
- hdu 3409 最短路树+树形dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3409 参考博客:http://www.cnblogs.com/woaishizhan/p/318981 ...
- Rules
我们之前处理异常的时候用到过Rules,当然还有很多其他规则.Rules允许弹性的添加或者重定义测试方法的行为.测试者可以重复使用或者扩展下面的某一个Rules,也可以写一个属于自己的规则. 这里先展 ...
- ActionScript 3.0数组操作
var arr:Array=new Array();arr=["a","b","c"]; //赋初值,注意这里的即使单个字符赋值使用的是& ...