




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/3/91Windows Presentation Foundation2021/3/92回顾过去目前大多数基于Windows的用户界面都使用两种主要技术GDI和SER子系统,它们是在1985年随Windows 1.0引进的。不过这几乎已经是技术世界的史前文物了。在二十世纪九十年代早期,OpenGL(由SGI公司创建)成为了一种在Windows或非Windows系统上进行高级2D和3D的图形开发的流行图形库。从事计算机辅助设计、科学的可视化和游戏开发工作的人们大量使用它。DirectX是1995年由微软引进的技术,为2D图形、输入、交流、声音提供新的高性能处理方法,最终扩展到对3D的支
2、持。GDI+是在Windows XP时代引进的,构建在GDI顶层,并添加了对alpha渲染和渐变刷子的支持。2021/3/93回顾过去近些年,开发人员开始自己尝试创建个性化的Windows应用程序或控件。一个简单的例子是使用位图来制作按钮而不使用标准按钮控件。这些定制化的东西不仅开发起来十分昂贵,而且经常只是产生昙花一现的绚烂效果。这样的应用程序经常变得无法访问;无法运行在部分受信的环境中;在远程桌面中无法很好地显示;也无法很好地处理高分辨率的设置,还会有其他一些可视化的小故障。2021/3/94WPF的亮点微软公司意识到,我们需要一些崭新的东西来摆脱GDI+和USER的限制,并且它必须是一种
3、生产效率很高的产品,就像Windows Forms那样,WPF就是答案.广泛整合在WPF出现之前,Windows开发人员若需要在普通的2D图形和控件之外再使用3D、视频、语音、富文档视图技术,就不得不学习一些独立技术,这些技术之间通常存在许多不一致,而且是在没有多少内建支持的情况下组合运用它们。而WPF通过统一的编程模型和紧密整合涵盖了所有这些部分,在紧密整合下,各种媒体类型都能组合起来并一起呈现。你可以在不同媒体类型上应用一致的效果,你所学的某个领域中的许多技术可以应用在任何其他领域。2021/3/95WPF的亮点与分辨率无关想象这样一个世界,在这里切换到高分辨率设置时并不意味着什么东西都变
4、小了,而是让图形和文本的显示更清晰。WPF让这一切变得简单,允许你缩小或者放大屏幕上的元素,却不需要考虑屏幕的分辨率,因为WPF使用矢量图形,使许多这方面的需求变为可能。这个改变很容易在Windows Vista放大镜应用程序中看到,放大镜程序天生就支持WPF矢量图形。2021/3/96WPF的亮点2021/3/97WPF的亮点硬件加速虽然WPF是项新技术,但是它是基于Direct3D创建的。特别要注意的是,在WPF应用程序中无论是2D还是3D的图形或者文字内容都会被转换为3D三角形、材质和其他Direct3D对象,并由硬件负责渲染。这意味着WPF应用程序与基于GDI的系统不同,它们可以从硬件
5、加速中获得好处,从而获得更平滑的图像和更好的性能(因为工作全部是由图形处理单元graphics processing units,GPU完成的,而不是由中央处理单元CPU完成)。它还允许每个WPF应用程序(不仅仅是高端游戏)都可以从新的硬件和驱动中获得最大的好处,因为这些硬件和驱动的发展主要集中在3D处理能力上。2021/3/98WPF的亮点声明式编程20多年来,Win16/Win32程序都用声明式资源脚本来定义对话框和菜单的布局。虽然Windows Forms没有内建对声明式用户界面定义的支持,但所有类型的.NET程序通常是利用声明式定制属性和基于XML的配置和资源文件。但是WPF通过引入X
6、AML(可扩展应用程序标记语言,Extensible Application Markup Language,读音为Zammel)将声明式编程带入下一个层次。WPF和XAML的组合十分类似于使用HTML定义一个用户界面,但却具有令人吃惊的表示能力。这种表示能力甚至超越了用户界面的范畴,WPF可以将XAML作为一种文档格式、一种3D模型表示,等等。2021/3/99WPF的亮点富创作和定制(Rich composition and customization)WPF控件具有你从没见过的创作能力。你可以将一些动画按钮放入一个ComboBox控件中,或者将一些视频剪辑放入一个菜单中!易于部署WPF为
7、(使用Windows Installer或lickOnce)部署传统Windows应用程序或在Web浏览器中宿主应用程序提供了选择。一句话,WPF的目的是集众家之所长,将各系统的最佳特性组合起来,如DirectX的3D和硬件加速、Windows Forms的开发人员生产效率,Adobe Flash强大的动画支持,HTML的声明式标记和易于部署。2021/3/910进入WPF行为与显示的分离行为与显示的分离:WPF 把用户界面的显示和它行为控制完全分离开了。界面通常用由可扩展应用程序标记语言(xaml)生成,而行为则由一个托管的变成语言来实现,如C# 、vb等。它们之间通过数据绑定,事件和命令来
8、相互联系在一起。行为和显示的分离具有以下几个优点: 降低了界面与行为之间的偶合性 设计人员和开发人员可以以各自的模式工作 界面设计工具仅仅工作在一个类似XML的文档上,而不再转化为代码 2021/3/911WPF 开发流程 用户体验是成功的关键因素:用户体验是成功的关键因素:过去,我们开发一套软件主要在于尽可能满足客户的功能性需求。用户体验则放在开发完成后才考虑。而现在,客户需要的不再仅仅是一个能工作的产品。能够提供正确的功能仍然是一个好产品的先决条件,但把它转向正式产品,那你不得不提供一个良好的客户体验。提供丰富的客户体验不是虚无缥缈的。必须对它计划和设计,然后再把他集成在产品的开发中。设计
9、丰富的客户体验不仅仅是用一些图片、渐变等效果来装饰你的用户界面。它应该在软件和用户之间建立一种情感,应该使用户感觉舒适,以至于他喜欢继续使用你的产品。2021/3/912XAML介绍 XAML是Extensible Application Markup Language(可扩展应用程序标记语言)的缩写。它是一种简单的基于XML的用来创建.NET对象及其关系的语言。虽然起初它是为WPF而设计的,用来创建对象树。但现在XAML不仅可用于创建WPF、Sliverlight用户界面,还可以申明Windows工作流(WF)的流程或XPS的标准电子文件。WPF中所有的类都有一个无参的构造函数和灵活的属性应
10、用。其目的就是为了完全适应XML语言,像XAML中。2021/3/913XAMLXAML的优势的优势先说一点就是XAML中所能做的用代码同样可以实现。XAML仅仅是创建和初始化对象的另一种途径。你完全可以不使用XAML来实现WPF应用。在XAML中申明还是在代码里编写完全取决于自己的想法。不过在XAML来申明用户界面有下列一些好处:XAML代码比较简单、清晰、易读 分离的逻辑代码和设计代码 图形设计工具如expression blend都创建的是XAML文件 XAML中逻辑和设计的分离也表示了设计者和开发者角色的独立 2021/3/914XAMLXAML和代码和代码用一个简单的在StackPa
11、nel中添加一个文本框和按钮来比较一下XAML和C#代码。 Welcome to the World of XAML OK 2021/3/915XAMLXAML和代码和代码下面是在C# 代码中相同的效果:StackPanel stackPanel = new StackPanel(); this.Content = stackPanel; TextBlock textBlock = new TextBlock(); textBlock.Margin = new Thickness(10); textBlock.Text = Welcome to the World of XAML; stack
12、Panel.Children.Add(textBlock); Button button = new Button(); button.Margin= new Thickness(20); button.Content = OK; stackPanel.Children.Add(button);你可以很清楚的看到XAML版的是很简洁,易读。这就是XAML表达式的强大之处。2021/3/916元素即属性元素即属性 从XML语句中可以看出属性一般是内嵌书写的。但是,如果我们想在属性中比如Content中放置一个更复杂的对象,像图像、甚至它本身或者一整张网格面板该怎么做呢。我们可以用元素作属性的语法
13、实现。它允许我们提取属性作为它自己的子元素。 2021/3/917隐式类型转换隐式类型转换 WPF中一个重要的概念就是隐式类型转换,在后台进行处理。如下面定义了一个BorderBrush,单词“Blue”仅仅是一个字符串。但隐式的BrushConverter会将其转化为一个System.Windows.Media.Brushes.Blue。同样的道理,thickness的值也会隐式的转换为Thickness对象。WPf包含很多这样的内置的类型转换,同时也支持用户自定义的类型转换。 2021/3/918名字空间名字空间 每一个XAML的开始,都必须包含两个名字空间,第一个是:http:/ lev
14、el)的XmlnsDefinition属性完成。你也可以使用clr-namespace直接在XAML中引用一个CLR名字空间,例如: 2021/3/919依赖属性 当你开始用WPF编程的时候,很快就会碰到“依赖属性”。它们和一般的.Net属性看起来很相似,但简单概念之后则是更复杂和更强大。主要的区别在于:平常的.NET属性的值直接读取直接读取于类的一个私有属性,而依赖属性的值则是通过调用继承自DependencyObject的GetValue()方法动态赋值动态赋值的。当你给一个依赖属性赋值时,它不是存储在对象的字段对象的字段中,而是在存储在基类DependencyObject提供的一个键键-
15、值配对值配对的字典的字典中。一条记录中的键(Key)就是该属性的名称,而值(Value)则是想要设置的值。2021/3/920WPF 布局介绍 控件的布局对于应用程序的易用性是至关重要的。基于像素坐标的控件部署可以工作在限制性的环境中。但是,当你要在不同的显示屏或不同大小的显示设备上时就不那么理想了。WPF提供了一系列丰富的内嵌布局面板可帮助防止一些常见的不足。这是WPF中最常见的5种布局面板:Canvas PanelGrid Panel Stack Panel Dock Panel Wrap Panel 2021/3/921基本规则基本规则1、防止位置固定:使用Alignment 和Merg
16、in属性的组合在面板中部署元素 2、防止大小固定:尽可能的设置元素的Width和Height属性为Auto 3、不要随便滥用Canvas布局元素,只有在布局矢量图形时使用 4、对话框中的按钮使用StackPanel布局 5、使用GridPanel布局一个数据性表单,为Label设置列的大小为Auto,TextBox设置列为一个星号大小。 6、在DataTemplate中使用网格布局的ItemControl布局键值列表。使用SharedSize功能同步标签的宽度。2021/3/922垂直对齐和居中对齐垂直对齐和居中对齐使用VerticalAlignment和HorizontalAlignment
17、属性停靠控件。下面图形显示了不同组合的各种效果。2021/3/923MarginMargin和和PaddingPaddingMargin和和PaddingMargin和Padding 经常用于在空间的内外保留空间Margin指定控件外围的空间 Padding指定控件里面的空间 外层元素的Padding就是内层元素的Margin。2021/3/924Canvas Panel2021/3/925Canvas Panel left=0,top=0 left=18,top=18 2021/3/926Canvas.ZIndex left=0,top=0 left=18,top=15 2021/3/927
18、Stack Panel2021/3/928 2021/3/929 2021/3/930WrapPanel2021/3/931 2021/3/932Grid Panel2021/3/933Dock Panel2021/3/934Dock Panel 2021/3/935Grid Panel 2021/3/936Grid Panel 2021/3/937ColumnSpan 2021/3/938GridSplitter 2021/3/939Grid Panel模拟2021/3/940Visibility2021/3/941Visibility collapsed button below a co
19、llapsed button collapsed button below a collapsed button 2021/3/942应用变化2021/3/943 2021/3/944 2021/3/945RenderTransformOrigin 2021/3/946LabelLabel和TextBlockTextBlock Label和TextBlock都是System.Windows.Controls命名空间下的类,但二者的父类并不相同。TextBlock继承自System.Windows.FrameworkElement,从这个角度讲,TextBlock不能称之为“控件”(因为它没有继承Control类,关于Control类,我会在WPF Unleashed第四章为大家介绍),而Label继承自System.Windows.ContentControl。FrameworkElement是非常底层的类,它同时也是ContentControl的父类。所以,Label相对TextBl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子合同合作协议模板
- 珠宝产品销售合同协议
- 生产原材料合同协议
- 电梯代理授权合同协议
- 珠宝买卖服务合同协议
- 电力工程合作合同协议
- 电子商务合作协议合同
- 甲供材采购合同协议
- 用品安全协议书模板
- 电子协议租赁合同协议
- 辽宁沈阳国有资产托管中心有限公司招聘笔试题库2025
- 哮病中医特色护理查房
- 统编版2024-2025学年语文六年级下册期中核心素养评估卷有答案
- 2025-2030中国浮吊行业市场发展趋势与前景展望战略分析研究报告
- 职场人士健身与锻炼技巧
- 918勿忘国耻铭记历史课件-高一上学期主题班会
- 船舶英语考试练习题及答案1-2023-练习版
- 2025年中国景泰蓝摆件盒市场调查研究报告
- 公共关系学电子教案
- 王者荣耀考试试题及答案
- GB/T 5709-2025纺织品非织造布术语
评论
0/150
提交评论