WPF进入我们的生活已经很多年。(写这句话让我想起来了“我不做大哥好多年”。) 个人认为在UI的实践中,用户需要的是易于操作的,更加绚丽的界面。这两个应该是最基本、也是最重要的宗旨。而对于开发人员就是要用最简单的方法开发出尽可能漂亮的界面,并且效率也不能太差。(要求是不是有些过分啦!)除了在一些Web开发和特殊的应用中,很少有开发组配备单独的美工,至少目前是这样吧!根据自己目前对WPF的了解程度,感觉WPF在其中某些方面确实有超强的震撼力。

客观上讲,Vista操作系统确实给我们带来了无可比拟的视觉效果。我自己深有体会,在近2个月的时间里每天都是在Vista下的开发,回家后看到XP系统,始终有些不爽的感觉。

WPF可以认为是MS利用原有.NET框架的一些特色,加上DirextX的产物。从下图的WPF组件中,我们可以看出最底层仍然是一些内核API。(以下两张图片都来自互联网。)

其中红色显示的组件是WPF的核心。Milcore是一个和DirectX交互的非托管组件,非托管代码能带给我们更高效的处理,能更好的和DirextX交互。WPF的所有显示都是由Dirext完成的。milcore中一个非常重要的功能就是Composition引擎,这个引擎对效率的要求很高,它的具体作用稍后介绍。所以milcore放弃了一些CLR的特征来换取效率。而另外两个红色的组件都是建立在CLR基础之上,利用了.NET的优势。

至于其中的User32组件有什么作用,偶目前的知道的就是在WPF的某些应用场景中为了某些兼容需要使用User32,其中就有DWM(桌面窗口管理)。DWM的内容又可以写上一大堆,感兴趣的朋友可以看SDK文档。

我们除了关心WPF的基本结构外,更重要的 是WPF提供了什么功能,请看下图:

图中的每个黄色块都是一种媒体类型。这就表示WPF可以处理几乎所有的媒体类型:位图、3D、音频、视频和文本等等。通过WPF,它集成了现在的GDI/GDI+、D3D/OPENGL以及多媒体的DSHOW等等。所有的东西都是等同对象,不管的3D还是2D,或者文本。

结构图中的Animate块贯串了整个的结构,因为在WPF中我们可以对所有的可视内容进行动画操作。这是非常让人期待的功能。Animate下面我们再次看到了Composition引擎,前面提到过它是位于milcore组件中。开发过程中,我们的界面元素功能有多种,比如图片,视频等等,最后显示到窗口的内容可以认为只是一张图片(准确说是Surface)。这个引擎的作用就是合成这些图片和视频元素最后进行提交显示。

转载于:https://www.cnblogs.com/hehe520/archive/2006/12/20/6330094.html

WPF指南之一(WPF的结构)相关推荐

  1. WPF指南之XAML概述

    [转]WPF指南之XAML概述 周日, 05/04/2008 - 23:26 - robot 出处:  it168 要赢得世界,必须在恰当的时间做出恰当的事.这一点,微软做到了.历经微软DOS,Win ...

  2. ERP MES 两套系统源代码 WPF AGV C# WPF开发。 A,WPF MES 上位机产线执行系统

    ERP MES 两套系统源代码 WPF AGV C# WPF开发. A,WPF MES 上位机产线执行系统. 1, 完整纯源代码: 2, AGV自动调度: 3, SQLSERVER数据库. 带附加文件 ...

  3. WPF圣经——《WPF揭秘》

    WPF圣经--<WPF揭秘> <o:p></o:p> <o:p></o:p> <o:p> </o:p> <o: ...

  4. 学习WPF之解决方案和项目结构

    1. 概要 古人云: 工欲善其事,必先利其器. 学习一种新的开发, 就要先了解其开发工具 和 项目结构. 目前WPF 项目的开发工具 常用的是 Visual Studio, 也有其他开发工具如: Ri ...

  5. WPF:从WPF Diagram Designer Part 1学习控件模板、移动、改变大小和旋转

    欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ] 由于上周主要做了项目组产品架构.给公司新员工培训以及其他会议等事情,在OpenExpressApp对建 ...

  6. 零起点学习WPF之《WPF揭秘》读书笔记(7)——第三章 变更通知

    3.2.2变更通知 无论何时,只要WPF依赖属性的值发生改变,WPF就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现适当的元素,更新当前布局,刷新数据绑定等.内建的变更通知最有趣的特性之 ...

  7. WPF:从WPF Diagram Designer Part 4学习分组、对齐、排序、序列化和常用功能

    在前面三篇文章中我们介绍了如何给图形设计器增加移动.选择.改变大小及面板.缩略图.框线选择和工具箱和连接等功能,本篇是这个图形设计器系列的最后一篇,将和大家一起来学习一下如何给图形设计器增加分组.对齐 ...

  8. WPF:使用WPF应用程序中的默认网络凭据和凭据存储来管理自动登录

    目录 介绍 背景 使用代码 下载源文件276.9 KB 介绍 在这里,在本文中,我创建了一个简单的WPF应用程序,该应用程序尝试使用默认网络凭据针对WebApi服务对用户进行身份验证.如果成功,将为将 ...

  9. WPF学习(3) – WPF控件

    控件可以根据它们所对应的继承关系分成 4 个不同的种类: 内容控件 Items 控件 Range 控件 文本和墨水控件 1. 内容控件 内容控件是只允许包含单一项(item)的简单控件.内容控件都继承 ...

最新文章

  1. 你的 Redis 为什么变慢了?
  2. 4、 LIMIT:限制查询结果的条数
  3. gis 大屏_gis大屏可视化应用技术方案_gis大屏可视化应用技术_gis大屏可视化应用 - 帆软...
  4. 计算机操作系统寻址,计算机操作系统-寻址和字节顺序
  5. 鼠标指针放置上面,显示内容_使鼠标指针远离您键入的内容
  6. Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现
  7. java中的集合框架_JAVA中的集合框架(上)List
  8. 解决undefined reference to symbol ‘sem_close@@GLIBC_2.2.5‘问题
  9. 十七、PHP框架Laravel学习笔记——模型的定义
  10. 用Python计算最长公共子序列和最长公共子串
  11. map在Sql中的传参 模糊查询limit分页
  12. 配置Log4j(很详细)1
  13. C/C++ 创建两个链表,实现两个链表高位到低位相加,并输出链表
  14. elementui的横向滚动_记一次element-ui配置化table组件的适应性问题(横向滚动条)...
  15. 网页隐藏index.php,如何隐藏url中的index.php
  16. 传智黑马java基础学习——day11(接口、多态)
  17. 手机屏幕驱动板HDMI调光触摸旋转说明Fondar
  18. 能否将一个网址(如QQ空间网址),打包成APK,然后别人下载APK安装到手机后,点击进入这个网址?
  19. php 加密算法+接口安全技术
  20. Android intent.Action 参数值及对应功能介绍(转)

热门文章

  1. Java的this和super关键字详解
  2. lower_boundupper_bound
  3. 鹰式价差matlab,震荡市场中的蝶式价差交易
  4. python数值型转换字符型_2.6 字符型常量
  5. [转载]js节流与防抖,防止重复提交、防止频繁重复点击
  6. 企业网络推广方案教大家在更换服务器时降低排名影响的技巧!
  7. 发文平台对文章发布的基本要求
  8. mysql同步 触发器_mysql 触发器(数据库的同步)
  9. ping无法访问目标主机 0丢失_预渗透之目标识别
  10. 更新版vimrc(java自动补全)