一。概述

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. Samples DataBind FastJson循环引用问题

    Fastjson full support databind, it's simple to use. Encode import com.alibaba.fastjson.JSON; Group g ...

  2. 使用 Java 开发兼容 IPv6 的网络应用程序

    根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽.因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6.对于 Java,从 ...

  3. ZOJ-2587-Unique Attack(最小割的唯一性)

    题意: 求无向图最小割是否唯一 分析: 1.我们先对原图求一次最大流 2.对残留网络,我们从S开始,找到所有所有S能到达的点:再从T开始,找出所有能到达T的点. 3.判断原网络中是否还有没有访问到的点 ...

  4. NeoOcean - Unity3D Ocean Waves Simulation

    GMail: bearworks8@gmail.com QQMail:196221347@qq.com QQ Group:391782326 Dropbox Demo:  https://www.dr ...

  5. Android按钮式进度条

    package com.example.progress.demo; import android.annotation.SuppressLint; import android.content.Co ...

  6. SRM149 - SRM150(少SRM150-DIV1-LV3)

    SRM 149 DIV2 1000pt 题意: 对于n个人,第i人有pi的钱.将他们分成不超过四个组,每组统一交费x,对每个人,若他拥有的钱超过x则交费,否则不交费.问最多能使这些人交多少钱. 1&l ...

  7. ssh技巧

    1. 打通ssh key的简单方法: ssh-copyid 192.168.1.1 2.使用ssh 将Linux主机变成http代理服务器 ssh -NfD 192.168.22.1:10080 12 ...

  8. [转]windows10 64位环境下安装mysql5.7.17

    今天以zip模式在windows10 64位环境下安装mysql5.7,到最后一步提示mysql服务无法启动. 安装步骤如下: 1.配置环境变量 我的电脑->属性->高级->环境变量 ...

  9. js中正则表达式的使用

    1,作用:匹配一个字符串中的一些内容2,声明和使用: 1),构造函数 var reg=new RegExp(/表达式/) 2),字面量 var reg=/表达式/ 推荐使用 eg: var reg=/ ...

  10. pandas对象保存到mysql出错提示“BLOB/TEXT column used in key specification without a key length”解决办法

    问题 将DataFrame数据保存到mysql中时,出现错误提示: BLOB/TEXT column used in key specification without a key length 原因 ...