WPF之旅(一)- 概述
WPF与之前出现的其他技术相比引入了“内置硬件加速”和“分辨率无关”等创新功能。WPF是一种成熟的技术,它是几个已经发布的.NET平台的一部分,并通过几个版本不断地进行完善(WPF3.0 -> WPF3.5 -> WPF3.5 SP1-> WPF4 -> WPF4.5)。
Windows图形演化
传统的Windows应用程序都依靠Windows操作系统提供的两个部分来创建界面:
1. User32:该部分为许多元素(如窗口,按钮和文本框)提供熟悉的Windows外观。
2. GDI/GDI++:渲染简单形状,文本及图像提供绘画支持,但通常性能较差。
WPF引入到Windows编程领域中的一些重要变化
1. 类似Web的布局模型:流式布局。
2. 丰富的绘图模型:直接处理图元-基本形状,文本及其他图形元素。
3. 丰富的文本模型:文本,列表和浮动的图形及其他用户界面元素。
4. 作为首要编程概念的动画:声明式标签定义动画,WPF会自动让他们动起来。
5. 支持音频和视频媒体:支持播放任何Windows媒体播放器支持的音视频,允许集成视频工具。
6. 样式和模板:显示格式标准化。
7. 命令:通过代码抽象,定义应用程序命令并将其链接到多个控件上。
8. 声明式用户界面:XAML
9. 基于页面的应用程序:创建类似浏览器的应用程序。
WPF体系结构

下面我们来逐一讲解上图一些重要组件:
1. PresentationFramework.dll:包含WPF顶层的类型,包括那些表示窗口、面板以及其他类型控件的类型。
2. PresentationCore.dll:包含基础类型,如UIElement类和Visual类,所有形状和控件都继承自这两个类。
3. WindowsBase.dll:包含更多基本要素如DispatcherObject类和DependencyObject类,这两个类引入了依赖项属性。
4. micore.dll:WPF的渲染核心
5. Direct3D:一套低级API,WPF应用程序中所有图形都由他进行渲染。
6. User32:用于决定哪些实际程序占有桌面的哪一部分。
参考书目
WPF编程宝典-使用C#2012和.NET 4.5
WPF体系架构:http://msdn.microsoft.com/zh-cn/library/ms750441(v=vs.110).aspx
本人最近开始学习WPF以及DevExpress,藉此提升自己C/S架构编程的能力。在学习过程会有一些心得体会,于是便会写一些博客来记录这些想法,有兴趣的朋友可以和我一起交流学习。那么就让我们从这里开始WPF与DevExpress的旅程吧!
QQ群: 32745894,欢迎大家加入讨论!
博客地址: http://www.cnblogs.com/zhq3051/
WPF之旅(一)- 概述的更多相关文章
- WPF UI布局之概述
在线演示:http://v.youku.com/v_show/id_XNzA5NDk2Mjcy.html 清晰版视频+代码下载:http://115.com/lb/5lbeer0m9lad 一.简单介 ...
- WPF六个控制概述
在线演示:http://v.youku.com/v_show/id_XNzA0NjU1Mjk2.html 清晰版视频+代码下载:http://115.com/lb/5lbcftnrfo9s 一.简单介 ...
- WCF学习之旅—WCF概述(四)
一.WCF概述 1) 什么是WCF? Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终 ...
- WPF之旅(二)- XAML
什么是XAML XAML(Extensible Application Markup Lanaguage的简写,发音“zammel”)是用于实例化.NET对象的标记语言.尽管XAML是一种可以用于诸多 ...
- WPF之旅(三)- 布局之StackPanel
说到WPF的界面布局,相信很多朋友都写过Html代码.在WPF中,大多数程序都使用类似Web的(flow)流布局.在使用流布局模型时,各种控件可以按特定的要求来排列,在窗口内容发生变化时,比如窗口大小 ...
- Java探索之旅(1)——概述与控制台输入
使用的课本: Java语言程序设计(基础篇)----西电 李娜(译) 原著: Introduction to Java Progrmming(Eighth Edition) -----Y.Daniel ...
- WPF学习概述
引言 在桌面开发领域,虽然在某些领域,基于electron的跨平台方案能够为我们带来某些便利,但是由于WPF技术能够更好的运用Direct3D带来的性能提升.以及海量Windows操作系统和硬件资源的 ...
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
- WCF学习之旅—WCF第二个示例(五)
二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...
随机推荐
- android studio还不错
今天体验了哈 Android Studio,还不错同Elipse类似
- mysql 重命名表名
先创建一张表: -- 创建用户表 CREATE TABLE user10( id SMALLINT UNSIGNED KEY AUTO_INCREMENT, username ) NOT NULL U ...
- state/ui-router
state/ui-router 一个状态对应于一个页面位置 通过定义controller.template和view等属性,来定义指定位置的用户界面和界面行为 通过嵌套的方式来解决页面中的一些重复出现 ...
- React Native学习-控制横竖屏第三方组件:react-native-orientation
在项目中,有时候可能会想使不同的页面显示的横竖屏也不一样,比如前一段我做的<广播体操>的项目,在首页面,肯定是想使页面为竖屏显示,但是播放页面要为横屏显示,即使用户的手机可以转屏,我们的播 ...
- 使用JDBC-ODBC读取Excel文件
以下代码我没有真正去实践,紧做为总结,方便以后查阅: 这种方法需要设置ODBC源..... 参考: http://xytang.blogspot.com/2008/02/how-to-connect- ...
- Storm累计求和中使用各种分组Grouping
Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证bolt中的每个任务接收到的tuple数目相同.(它能实现较好的负载均衡) Fields Grouping: ...
- [转]如何编译tizen源码(图文教程)?
http://blog.csdn.net/flydream0/article/details/9004746 前一篇文章已经介绍了如何下载tizen源码(http://blog.csdn.net/fl ...
- MySQL Server 5.5安装中遇到的问题及解决方法
之前开始用师兄用过的电脑工作,各种不适应,开始重新搭建自己习惯的环境,重装MySQL就是其中一项,然后重装过程中遇到了问题,具体情况总结如下: 1.以前也重新安装过MySQL,但是完全没有用过就直接卸 ...
- 略谈Android之Intent
前言:大家都知道Android程序的实现一般都由四大组件构成: Activity :Android程序实现功能的主体,提供了和客户交互的界面,也提供了和后台交互的功能. Service :是一个没有界 ...
- 十九、android中判断sim卡状态和读取联系人资料的方法
在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...