一。概述

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概述的更多相关文章

  1. WPF 概述

    WPF 全称是:Windows Presentation Foundation,直译为Windows表示基础.WPF是专门为GUI(Graphic User Interface)程序开发设计的. 在过 ...

  2. WPF学习(1)WPF概述

    WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于NET Framework 3.0的一部分.它提供了统一的编程模型 ...

  3. WPF概述(硬件加速及分辨率无关性)

    一.名词解释 WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具. 大部分程序都是多层架构的,一般至少包含三层 ...

  4. (1)WPF概述

    一.wpf特点 winfrom使用GID/GID+ 图形引擎,wpf使用directx的图形引擎 通过directx提供硬件加速 类型web的布局模型 丰富的绘图模型.文本模型, 支持音频视频 可创建 ...

  5. WPF编程宝典(Pro wpf in c# 2012)(文摘)

    第一部分 基础知识 第1章 WPF概述 第2章 XAML 第3章 布局 第4章 依赖项属性 第5章 路由事件 第二部分 进一步研究WPF 第6章 控件 第7章 Application类 第8章 元素绑 ...

  6. WPF UI布局之概述

    在线演示:http://v.youku.com/v_show/id_XNzA5NDk2Mjcy.html 清晰版视频+代码下载:http://115.com/lb/5lbeer0m9lad 一.简单介 ...

  7. wpf动画概述

    http://msdn.microsoft.com/zh-cn/library/vstudio/ms752312(v=vs.100).aspx Windows Presentation Foundat ...

  8. WPF六个控制概述

    在线演示:http://v.youku.com/v_show/id_XNzA0NjU1Mjk2.html 清晰版视频+代码下载:http://115.com/lb/5lbcftnrfo9s 一.简单介 ...

  9. WPF中的导航框架(一)——概述

    有的时候,我们需要一个支持页面跳转的UI,例如文件浏览器,开始向导等.对于这样的界面,简单的可以使用ContentControl + ContentTemplateSelector的方式来实现,但是有 ...

随机推荐

  1. 关于Unity导出的Android应用在小米、联想等机型上崩溃的问题

    应用在三星手机上运行没有出现问题,但在小米和联想手机上会崩溃.这个问题在刚开始时一直查不到问题所在,后来发现是因为Android清单文件中声明的权限出现了重复,去掉了重复的权限之后,就没有出现崩溃的情 ...

  2. java Active Object模式(下)

    Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...

  3. SharePoint2013 Powershell script to get site Title, Site Owner, Site user count and usage

    Powershell script to get site Title, Site Owner, Site user count and usage Add-PSSnapin microsoft.sh ...

  4. JVM系列五:JVM监测&工具

    JVM系列五:JVM监测&工具[整理中]  http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html 前几篇篇文章介绍了介 ...

  5. Highways

    poj1751:http://poj.org/problem?id=1751 题意:给你n个城市,每个城市的坐标给你,然后为了是每个城市都连通,需要在已经建了一些街道额基础上,再次建一些街道使其连通, ...

  6. Finding Nemo(bfs)

    Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 6988   Accepted: 1600 Description Nemo ...

  7. LNMP一键安装脚本

    #!/bin/bash #LNMP(Fastcgi) #CentOS + MySQL 5.5 #-- iptables -F iptables -X iptables -Z iptables -A I ...

  8. 【C#】详解使用Enumerable.Distinct方法去重

    Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组.集合中的重复元素,还可以自定义去重的规则. 有两个重载方法 ...

  9. 《精通CSS:高级Web标准解决方案》学习笔记(下)

    1. background-position: left center; 两个参数分别是x和y轴方向的position 2. background-position: 10% 20%; 用百分数表示时 ...

  10. Java nextInt()函数

    nextInt( int num) 能接受一个整数作为它所产生的随机整数的上限,下限为零,比如:nextInt(4)将产生0,1,2,3这4个数字中的任何一个数字,注意这里不是0-4,而是0-3..但 ...