版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教育部普通高等教育十二五国家级规划教材教育部普通高等教育十二五国家级规划教材C#程序设计及应用教程程序设计及应用教程第第3版版(包括简化版:(包括简化版:C#程序设计教程程序设计教程第第3版)版)第第7章章 WPF应用程序入门应用程序入门2Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件37.1 WPF应用程序和应用程序和XAML标记标记lWPF(Windows Presentation Foundation,Windows呈现呈现基础)是微软
2、推出的基于基础)是微软推出的基于DirectX和和GPU加速来实现的图形界加速来实现的图形界面显示技术面显示技术。其其优势在于界面呈现,优势在于界面呈现,主要用主要用它来开发在客户端运行的桌面应用它来开发在客户端运行的桌面应用程序程序。WPF应用程序使用应用程序使用XAML来描述界面来描述界面。lApp类类App类是从类是从Application类继承的类。类继承的类。通过通过App类,可以定义在整个应用程序范围内都可以使用的资源类,可以定义在整个应用程序范围内都可以使用的资源和公共属性和公共属性。u例如:例如:Application current = App.Current;Applica
3、tion current = App.Current;7.1 WPF应用程序和应用程序和XAML标记标记lApp类常用类常用的的属性、方法和事件属性、方法和事件457.1 WPF应用程序和应用程序和XAML标记标记l WPF应用程序的关闭模式应用程序的关闭模式调用调用Shutdown方法会立即关闭方法会立即关闭WPF应用程序。应用程序。Shutdown方法方法的典型用法为的典型用法为App.Current.Shutdown();ShutdownMode枚举类型指定应用程序的关闭模式。枚举类型指定应用程序的关闭模式。uOnLastWindowCloseOnLastWindowCloseuOnMa
4、inWindowCloseOnMainWindowCloseuOnExplicitShutdownOnExplicitShutdownl 【例【例7-1】 演示如何创建演示如何创建WPF应用程序应用程序67.1 WPF应用程序和应用程序和XAML标记标记lXAML命名空间和命名空间和x:前缀编程构造前缀编程构造声明声明XAML命名空间解决了共享命名空间解决了共享XAML标记和标记和C#代码的问题。代码的问题。根元素和根元素和XAML命名空间命名空间u一个一个XAMLXAML文件(扩展名为文件(扩展名为.xaml.xaml的文件)只能有一个根元素。的文件)只能有一个根元素。 ux:Classx:
5、Class用于为代码隐藏类指定用于为代码隐藏类指定CLRCLR命名空间和类名命名空间和类名 ; ;uxmlnsxmlns特性声明特性声明XAMLXAML默认的命名空间;默认的命名空间;x:前缀编程构造前缀编程构造 u根元素的根元素的 xmlns:xxmlns:x用于用于XAMLXAML命名空间映射,目的是为了通过命名空间映射,目的是为了通过x:x:前缀前缀编程构造来声明可被其他编程构造来声明可被其他XAMLXAML和和C#C#代码引用的对象。代码引用的对象。u x:Namex:Name通过特定子系统或通过特定子系统或FindNameFindName等方法,为运行时使用的等方法,为运行时使用的X
6、AMLXAML元素(即用元素(即用C#C#代码引用代码引用XAMLXAML元素)提供标识。元素)提供标识。 在在XAML中映射自定义命名空间中映射自定义命名空间 u若在若在XAMLXAML中引用自定义对象,就必须在中引用自定义对象,就必须在XAMLXAML中映射自定义命名空间。中映射自定义命名空间。 77.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 XAML的语法与的语法与HTML的语法非常相似,即都是利用元素、特性的语法非常相似,即都是利用元素、特性(Attribute)和属性()和属性(Property)来描述元素对象的各种要素)来描述元素对象的各种要素XAM
7、L最基本的语法为:最基本的语法为:u XAML中的对象元素名称、特性名称以及属性名称都区分大小写。中的对象元素名称、特性名称以及属性名称都区分大小写。87.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 对象元素语法对象元素语法 对象是指类的实例,在对象是指类的实例,在XAML中用对象元素来描述。例如:中用对象元素来描述。例如: 特性语法特性语法 用特性(用特性(Attribute)来描述对象的属性()来描述对象的属性(Property),特性名和特性值),特性名和特性值之间用赋值号(之间用赋值号(=)分隔,特性的值始终用包含在引号中的字符串来指定)分隔,特性的值始终
8、用包含在引号中的字符串来指定,引号默认用双引号,也可以是单引号,原则是,引号默认用双引号,也可以是单引号,原则是“值值”两边的引号必须匹两边的引号必须匹配配 。例如:。例如: 特性语法还可用于描述事件成员特性语法还可用于描述事件成员 。例如:。例如:Click Me!97.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 属性语法:仅仅用特性语法无法来描述对象的某些属性,可以使用属性属性语法:仅仅用特性语法无法来描述对象的某些属性,可以使用属性语法。一般格式为:语法。一般格式为:例如:例如:Button Background=Blue Foreground=Red Ma
9、rgin=73,108,74,115 快捷菜单项快捷菜单项11 快捷菜单项快捷菜单项22 107.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 集合语法集合语法如果某个属性采用集合类型,可以使用集合语法如果某个属性采用集合类型,可以使用集合语法 。例如:。例如: XAML内容属性内容属性 内容属性的用途是为了简化标记,以便更直观地嵌套父内容属性的用途是为了简化标记,以便更直观地嵌套父/子元素。例子元素。例如:如:This is a Text Box This is a Text Box 相当于:相当于:117.1 WPF应用程序和应用程序和XAML标记标记lXAML
10、基本语法基本语法 内容属性和集合语法组合内容属性和集合语法组合 按钮按钮11 按钮按钮22类型转换器类型转换器 将用字符串进行设置的特性值转换为其他对象类型或基元值。例如:将用字符串进行设置的特性值转换为其他对象类型或基元值。例如:Button Margin=10,20,30,40 Content= / 相当于相当于: :Button Content= 127.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 XAML中的空白处理中的空白处理 uXAMLXAML中的空白字符包括空格、换行符和制表符。中的空白字符包括空格、换行符和制表符。默认情况下,默认情况下,XAML处
11、理器会将所有空白字符(空格、换行符和制表处理器会将所有空白字符(空格、换行符和制表符)自动转换为空格。另外,处理符)自动转换为空格。另外,处理XAML时连续的空格将被替换为一个时连续的空格将被替换为一个空格。空格。如果希望保留文本字符串中的空格,可以在该元素的开始标记内添加如果希望保留文本字符串中的空格,可以在该元素的开始标记内添加xml:space=preserve特性。但是,要避免在根级别指定该特性,否则特性。但是,要避免在根级别指定该特性,否则会影响会影响XAML处理的性能。处理的性能。 137.1 WPF应用程序和应用程序和XAML标记标记lWPF设计器设计器 设计模式和拆分模式设计模
12、式和拆分模式 XAML编辑器编辑器 属性窗口属性窗口 大纲视图大纲视图 14Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件157.2 窗口和对话框窗口和对话框lWPF窗口窗口 窗口分类窗口分类WPF窗口由非工作区和工作区两部分构成窗口由非工作区和工作区两部分构成 ,非工作区主要包括图标、标,非工作区主要包括图标、标题、系统菜单、按钮和边框题、系统菜单、按钮和边框 。 u标准窗口:包含工作区和非工作区的窗口标准窗口:包含工作区和非工作区的窗口
13、u无边框窗口:只有工作区部分无边框窗口:只有工作区部分 u浮动窗口:非工作区的右上角只有关闭按钮,不包括最小化、最浮动窗口:非工作区的右上角只有关闭按钮,不包括最小化、最大化和还原按钮大化和还原按钮 u工具窗口:比浮动窗口多了一个工具窗口:比浮动窗口多了一个“铆钉铆钉”按钮。按钮。 167.2 窗口和对话框窗口和对话框l窗口生存周期窗口生存周期窗口的生存期是指从第窗口的生存期是指从第1次打开窗口到关闭窗口经历的一系列过程。在窗次打开窗口到关闭窗口经历的一系列过程。在窗口的生存期中,会引发很多事件。口的生存期中,会引发很多事件。 名 称说 明Title属性获取或设置窗口标题Width属性、Min
14、Width属性、MaxWidth属性Height属性、Minheight属性、MaxHeight属性获取或设置窗口的宽、高以及最大宽度、最小宽度、最大高度和最小高度WindowStartupLocation属性获取或设置窗口初次显示时的屏幕位置Background属性获取或设置描述窗口背景的画笔(Brush)。可以利用【属性】窗口选择纯色、线性渐变、径向渐变等Foreground属性获取或设置描述窗口前景色的画笔(Brush)。可以利用【属性】窗口选择纯色、线性渐变、径向渐变等SourceInitialized事件在Loaded事件之前发生,在此事件中可以与Win32进行交互(HwndSour
15、ce),如获取窗口句柄、初始化控件的样式等Loaded事件当元素布局完成并呈现时发生,此时已经可以与窗口交互Closing事件在窗口真正关闭前发生,可在此事件中取消窗口关闭177.2 窗口和对话框窗口和对话框l激活窗口激活窗口 首次打开一个窗口时,该窗口便成为活动窗口。活动窗口是当前正在捕首次打开一个窗口时,该窗口便成为活动窗口。活动窗口是当前正在捕获用户输入(如键盘输入或鼠标单等)的窗口。当窗口变为活动窗口时获用户输入(如键盘输入或鼠标单等)的窗口。当窗口变为活动窗口时,会引发,会引发Activated事件。事件。 注意,当第一次打开窗口时,只有在引发了注意,当第一次打开窗口时,只有在引发了
16、Activated事件之后,才会事件之后,才会引发引发Loaded和和ContentRendered事件。另外要记住,在引发事件。另外要记住,在引发ContentRendered事件时,便可认为窗口已打开。事件时,便可认为窗口已打开。当前活动窗口停用时引发当前活动窗口停用时引发Deactivated事件。事件。利用利用IsActive属性可检查窗口是否处于活动状态。属性可检查窗口是否处于活动状态。 187.2 窗口和对话框窗口和对话框l防止窗口激活防止窗口激活 在首次调用在首次调用Show方法之前,将该窗口的方法之前,将该窗口的ShowActivated属性属性设置为设置为false。这样窗口
17、便不会被激活,也不会引发窗口的。这样窗口便不会被激活,也不会引发窗口的Activated事件,而且当前激活的窗口仍然保持激活状态。事件,而且当前激活的窗口仍然保持激活状态。 l创建并显示新窗口创建并显示新窗口在在C#代码中调用代码中调用Show方法或者方法或者ShowDialog方法显示窗体。方法显示窗体。 u无模式窗口:调用无模式窗口:调用ShowShow方法,窗体显示后会立即执行该方法后面的方法,窗体显示后会立即执行该方法后面的语句,打开的窗口不会阻止用户与应用程序中的其他窗口交互。语句,打开的窗口不会阻止用户与应用程序中的其他窗口交互。u模式窗口:调用模式窗口:调用ShowDialogS
18、howDialog方法方法 ,在该窗口关闭之前,应用程序,在该窗口关闭之前,应用程序中的所有其他窗口都会被禁用,仅在该窗口关闭后,才继续执行中的所有其他窗口都会被禁用,仅在该窗口关闭后,才继续执行ShowDialogShowDialog方法后面的代码。方法后面的代码。对于对于“无模式无模式”窗口,调用窗口,调用Hide方法即可将其隐藏起来。方法即可将其隐藏起来。 197.2 窗口和对话框窗口和对话框l关闭窗口关闭窗口 在在C#代码中,直接调用代码中,直接调用Close方法即可关闭当前打开的窗口方法即可关闭当前打开的窗口当窗口关闭时,会引发两个事件:当窗口关闭时,会引发两个事件:Closing事
19、件和事件和Closed事件。事件。 l窗口关联窗口关联 通过设置附属窗口的通过设置附属窗口的Owner属性让一个窗口拥有另一个窗口属性让一个窗口拥有另一个窗口 。例如:例如:Window ownedWindow = new Window();Window ownedWindow = new Window();ownedWindow.Owner = this;ownedWindow.Owner = this;ownedWindow.Show();ownedWindow.Show(); 通过这种方式建立关联之后,附属窗口就可以通过通过这种方式建立关联之后,附属窗口就可以通过Owner属性的值来引用
20、属性的值来引用它的所有者窗口,所有者窗口也可以通过它的所有者窗口,所有者窗口也可以通过OwnedWindows属性的值来发属性的值来发现它拥有的全部窗口。现它拥有的全部窗口。 207.2 窗口和对话框窗口和对话框l在主窗口显示前先显示登录窗口或者欢迎窗口在主窗口显示前先显示登录窗口或者欢迎窗口 在主窗口显示前先显示另一个窗口,比如登录窗口或者欢迎窗口,当用户在主窗口显示前先显示另一个窗口,比如登录窗口或者欢迎窗口,当用户关闭登录窗口或者欢迎窗口后再显示主窗口,要达到这个目的,可以通过关闭登录窗口或者欢迎窗口后再显示主窗口,要达到这个目的,可以通过主窗口的主窗口的SourceInitialize
21、d事件来实现。事件来实现。 【例例7-2】 演示如何在主窗口显示前先显示登录窗口,同时演示窗演示如何在主窗口显示前先显示登录窗口,同时演示窗口的基本用法。口的基本用法。 217.2 窗口和对话框窗口和对话框l窗口的外观和行为窗口的外观和行为窗口的外观是指用户看到的窗口表现形式,行为指用户与窗口交窗口的外观是指用户看到的窗口表现形式,行为指用户与窗口交互的方式。互的方式。窗口大小窗口大小u窗口大小由窗口大小由WidthWidth、MinWidthMinWidth、MaxWidthMaxWidth、HeightHeight、MinHeightMinHeight、MaxHeightMaxHeight
22、以以及及SizeToContentSizeToContent等多个属性确定。等多个属性确定。窗口位置窗口位置u通过通过LeftLeft和和TopTop属性获取或更改窗口相对于屏幕坐标的属性获取或更改窗口相对于屏幕坐标的x x和和y y位置。位置。 uWindowStartupLocationWindowStartupLocation属性设置窗口第一次显示时的初始位置,枚举值有:属性设置窗口第一次显示时的初始位置,枚举值有:ManualManual(默认)、(默认)、CenterScreenCenterScreen、CenterOwnerCenterOwner。 227.2 窗口和对话框窗口和对
23、话框l窗口顺序窗口顺序表示从屏幕内向外方向显示顺序的位置,称为表示从屏幕内向外方向显示顺序的位置,称为z顺序。顺序。u有两种有两种z z顺序:正常顺序:正常z z顺序和最顶层顺序和最顶层z z顺序。顺序。在最顶层在最顶层z顺序中的窗口总是位于正常顺序中的窗口总是位于正常z顺序中的窗口之上。顺序中的窗口之上。通过将窗口的通过将窗口的Topmost属性设置为属性设置为true可以使窗口位于最顶层可以使窗口位于最顶层z顺序中。顺序中。 237.2 窗口和对话框窗口和对话框l对话框对话框消息框消息框调用调用MessageBox类的静态类的静态Show方法来显示消息框方法来显示消息框 。MessageB
24、ox类的静态类的静态Show方法提供了多种重载形式,常用的重方法提供了多种重载形式,常用的重载形式有:载形式有:upublic static DialogResult Show(string text)public static DialogResult Show(string text)upublic static DialogResult Show(string text, public static DialogResult Show(string text, string caption)string caption)upublic static DialogResult Show(p
25、ublic static DialogResult Show(ustring text, string caption, MessageBoxButton string text, string caption, MessageBoxButton buttons, MessageBoxImage icon) buttons, MessageBoxImage icon) 247.2 窗口和对话框窗口和对话框【例例7-3】 演示如何在演示如何在WPF应用程序中弹出消息框以及获取消应用程序中弹出消息框以及获取消息框返回的值。息框返回的值。 257.2 窗口和对话框窗口和对话框l通用对话框通用对话框O
26、penFileDialog对话框:用户选择一个或多个要打开的文件的对话框:用户选择一个或多个要打开的文件的文件名。文件名。SaveFileDialog对话框:用户选择一个要将文件另存为的文件对话框:用户选择一个要将文件另存为的文件名。名。PrintDialog对话框:用户选择和配置打印机并打印文档。对话框:用户选择和配置打印机并打印文档。l自定义对话框自定义对话框自定义对话框一般用于显示和收集特定的信息,分为模式对话自定义对话框一般用于显示和收集特定的信息,分为模式对话框(调用框(调用ShowDialog方法显示)和非模式对话框(调用方法显示)和非模式对话框(调用Show方法显示)。方法显示)
27、。 267.2 窗口和对话框窗口和对话框【例例7-4】演示自定义对话框的基本用法。演示自定义对话框的基本用法。 277.2 窗口和对话框窗口和对话框lWPF页和页面导航页和页面导航 在在WPF应用程序中,既可以用应用程序中,既可以用WPF窗口设计界面,也可以用窗口设计界面,也可以用WPF页页(Page)设计界面,并通过)设计界面,并通过Window、Frame或者或者NavigationWindow来来承载承载WPF页。页。 在在WPF窗口中承载窗口中承载Page 用用C#代码将代码将WPF窗口的窗口的Content属性设置为页的实例来承载属性设置为页的实例来承载WPF页,即将页,即将Wind
28、ow作为页的宿主窗口。例如:作为页的宿主窗口。例如:Window w = new Window();Window w = new Window();Page1 p = new Page1();Page1 p = new Page1();w.Content = p;w.Content = p;w.Show();w.Show();这种方式只能用这种方式只能用C#代码实现,而且承载的页没有导航功能,页中的超链代码实现,而且承载的页没有导航功能,页中的超链接也不会起作用,因此在实际应用中很少这样用。接也不会起作用,因此在实际应用中很少这样用。287.2 窗口和对话框窗口和对话框lWPF页和页面导航页和
29、页面导航 在在NavigationWindow中承载中承载Page 用用C#代码将代码将NavigationWindow窗口的窗口的Content属性设置为页的实例来承载属性设置为页的实例来承载WPF页,即将页,即将NavigationWindow作为页的宿主窗口。例如:作为页的宿主窗口。例如:Window w = new System.Windows.Navigation.NavigationWindow();Window w = new System.Windows.Navigation.NavigationWindow();w.Content = new PageExamples.Pag
30、e1();w.Content = new PageExamples.Page1();w.Show();w.Show();采用这种方式时,可以在页中设置导航窗口(采用这种方式时,可以在页中设置导航窗口(NavigationWindow)的标题以及)的标题以及窗口大小。也可以在窗口大小。也可以在C#代码中使用代码中使用NavigationService类提供的静态方法实现导类提供的静态方法实现导航功能。航功能。Page的常用属性如下。的常用属性如下。uWindowTitleWindowTitle:设置导航窗口的标题。:设置导航窗口的标题。uWindowWidthWindowWidth和和Windo
31、wHeightWindowHeight:设置导航窗口的宽度和高度。:设置导航窗口的宽度和高度。uShowsNavigationUIShowsNavigationUI:falsefalse表示不显示导航条,表示不显示导航条,truetrue表示显示导航条。表示显示导航条。uNavigationServiceNavigationService属性:获取该页的宿主窗口中管理导航服务的对象,利用该对属性:获取该页的宿主窗口中管理导航服务的对象,利用该对象可实现前进、后退、清除导航记录等操作。象可实现前进、后退、清除导航记录等操作。297.2 窗口和对话框窗口和对话框lWPF页和页面导航页和页面导航 在
32、在Frame中承载中承载Page在在Frame元素中将元素中将Source属性设置为导航到的页属性设置为导航到的页 ,在这种方式下,既,在这种方式下,既可以用可以用XAML加载页并实现导航,也可以用加载页并实现导航,也可以用C#代码来实现。代码来实现。 例如:例如:XAMLXAML:Frame Name=frame1 NavigationUIVisibility=Visible Source=Page1.xaml Background=#FFF9F4D4 /C#C#:frame1.Source = new Uri(Page1.xaml, UriKind.Relative);frame1.Sou
33、rce = new Uri(Page1.xaml, UriKind.Relative);307.2 窗口和对话框窗口和对话框l【例例7-5】演示如何承载演示如何承载WPF页以及如何实现导航。页以及如何实现导航。 31Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件327.3 颜色颜色 任何一种颜色都是通过对红(任何一种颜色都是通过对红(R)、绿()、绿(G)、蓝()、蓝(B)三个颜色通道的变)三个颜色通道的变化和它们相互之间的叠加来得到的。通过
34、化和它们相互之间的叠加来得到的。通过Alpha通道,还可以控制颜色的透通道,还可以控制颜色的透明度。明度。 WPF在在System.Windows.dll中的中的System.Windows.Media命名空间下,命名空间下,分别提供了分别提供了Brushes类、类、Colors类和类和Color结构,这几种形式都可以用来表结构,这几种形式都可以用来表示颜色。示颜色。 颜色格式颜色格式 (1 1)sRGBsRGB格式格式: :用用4 4个字节个字节(ARGB)(ARGB)表示一个像素的颜色表示一个像素的颜色 , ,取值范围均取值范围均为十六进制的为十六进制的00FF00FF,或者十进制的,或者
35、十进制的0 0到到255 255 (2 2)ScRGBScRGB格式格式: :也是用也是用4 4个字节表示一个像素的颜色个字节表示一个像素的颜色, ,其取值范围均其取值范围均用用0%0%到到100%100%之间的百分比来表示之间的百分比来表示 (3 3)HLSHLS格式和格式和HSBHSB格式格式: :这两种格式分别用透明度(这两种格式分别用透明度(AlphaAlpha)、色调)、色调(HueHue)、饱和度()、饱和度(SaturationSaturation)和亮度()和亮度(LightnessLightness)来表示颜色)来表示颜色 337.3 颜色颜色 Brushs类和类和Color
36、s类类 在在System.Windows.dll中的中的System.Windows.Media命名空间下的命名空间下的Brushes类和类和Colors类都利用静态属性提供了预定义的颜色,这些颜色在类都利用静态属性提供了预定义的颜色,这些颜色在各种应用程序中都可以使用。如设置控件的前景色、背景色、边框色等。各种应用程序中都可以使用。如设置控件的前景色、背景色、边框色等。BrushesBrushes类的类的C#C#语法为语法为public sealed class Brushespublic sealed class BrushesColorsColors类的类的C#C#语法为语法为publi
37、c sealed class Colors public sealed class Colors 这两个类都是隐藏类,即只能通过他们提供的静态属性获取或设置颜色。这两个类都是隐藏类,即只能通过他们提供的静态属性获取或设置颜色。347.3 颜色颜色 Color结构结构 WPF 在在System.Windows.Media命名空间下提供了一个命名空间下提供了一个Color结构,该结构通过结构,该结构通过A(透明度)、(透明度)、R(红色通道)、(红色通道)、G(绿色通道)和(绿色通道)和B(蓝色通道)的组合来创建(蓝色通道)的组合来创建各种自定义的颜色。各种自定义的颜色。一般形式为一般形式为“#r
38、rggbb”或者或者“#aarrggbb”,其中,其中#表表示十六进制,示十六进制,aa表示透明度,表示透明度,rr表示红色通道,表示红色通道,gg表示绿色通道,表示绿色通道,bb表表示蓝色通道。示蓝色通道。颜色格式静态属性和静态方法说 明sRGBA、R、G、B属性获取或设置颜色的Alpha通道值、R通道值、G通道值、B通道值,每个通道都用1个字节表示。FromArgb方法使用指定的sRGB Alpha通道和颜色通道值创建一个新的Color结构。不指定Alpha通道值时,默认为255。语法为public static Color FromArgb(byte a, byte r, byte g,
39、 byte b);ScRGBScA、ScR、ScG、ScB属性获取或设置颜色的Alpha通道值、R通道值、G通道值、B通道值,每个通道都用0到1之间(包括0和1)的值表示。Alpha属性的语法为public float ScA get; set; 其他属性的语法与此类似FromScRgb方法使用指定的ScRGB Alpha通道和颜色通道值创建一个新的Color结构,每个通道都用0-1之间(包括0和1)的值表示(称为ScRGB)。语法为public static Color FromScRgb(float a, float r, float g, float b);35Ch7 WPF应用程序入门
40、应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件367.4 形状形状 形状(形状(Shape)是具有界面交互功能的几何图形的封装形式。)是具有界面交互功能的几何图形的封装形式。System.Windows.Shapes命名空间定义了呈现命名空间定义了呈现2D几何图形对象的类,这几何图形对象的类,这些类都继承自同一个些类都继承自同一个Shape类类 l形状控件共有的属性形状控件共有的属性 形状控件共有的属性都是在形状控件共有的属性都是在Shape类中定义的。由于所有形状都
41、是从类中定义的。由于所有形状都是从Shape类继类继承的,所以形状控件都可以使用这些属性承的,所以形状控件都可以使用这些属性 。属 性说 明Stroke获取或设置指定形状轮廓绘制方式的BrushStrokeThickness获取或设置指定形状轮廓的宽度Fill获取或设置指定形状内部填充方式的BrushStretch用枚举值说明如何填充形状的内部。可选的枚举值有:None:不拉伸。内容保持原始大小Fill(默认值):调整内容的大小以填充目标尺寸,不保留纵横比Uniform:在保留内容原有纵横比的同时调整内容的大小至目标尺寸UniformToFill:在保留内容原有纵横比的同时调整内容的大小,并填
42、充至目标尺寸。如果目标矩形的纵横比不同于源矩形的纵横比,则对源内容进行剪裁以适合目标尺寸377.4 形状形状l矩形(矩形(Rectangle) 形状控件共有的属性都是在形状控件共有的属性都是在Shape类中定义的。由于所有形状都是从类中定义的。由于所有形状都是从Shape类继类继承的,所以形状控件都可以使用这些属性承的,所以形状控件都可以使用这些属性 。Rectangle类用于绘制矩形。例如:类用于绘制矩形。例如: Rectangle Width=100 Height=100 Fill=Blue Stroke=Red Canvas.Top=20 Canvas.Left=20 StrokeThi
43、ckness=3 /【例例7-6】演示矩形控件的基本用法。演示矩形控件的基本用法。 387.4 形状形状l椭圆(椭圆(Ellipse) Ellipse类用于绘制椭圆,当类用于绘制椭圆,当Width和和Height相等时,绘制的实际上相等时,绘制的实际上是一个圆。例如:是一个圆。例如: Ellipse Height=75 Width=75 Fill=#FFFFFF00 StrokeThickness=5 Stroke=#FF0000FF/这段这段XAML代码在设计界面中看到的效果如下图所示。代码在设计界面中看到的效果如下图所示。 2021年10月30日星期六397.4 形状形状l其他基本形状其他
44、基本形状 Line(直线)(直线) PolyLine(多条依次相连的直线)(多条依次相连的直线)PolyLine用于用于定义多个点,然后将这些点依次用直线相连,从而构成各种折线形状。例用于用于定义多个点,然后将这些点依次用直线相连,从而构成各种折线形状。例如:如: Polyline Points=50,25 0,100 100,100 50,25 Stroke=Blue StrokeThickness=10 Canvas.Left=75 Canvas.Top=50 / Polygon(多边形)(多边形)该控件和该控件和PolyLine用法相似,但它会自动将最后用法相似,但它会自动将最后1个点和
45、第个点和第1个点连起来。例如:个点连起来。例如: Polygon Points=300,200 400,125 400,275 Stroke=Purple StrokeThickness=2 40Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件417.5 画笔(画笔(Brush) 在在WPF应用程序中,画笔(应用程序中,画笔(Brush)是所有控件都具有的基本功能。最常)是所有控件都具有的基本功能。最常见的是利用画笔设置控件的前景色、背景色,填
46、充渐变色、图像和图案。见的是利用画笔设置控件的前景色、背景色,填充渐变色、图像和图案。l画笔分类画笔分类 画笔的所有类型都在画笔的所有类型都在System.Windows.Media命名空间下,命名空间下,Brush类是各类是各种画笔的抽象基类,其他画笔类型都是从该类继承。种画笔的抽象基类,其他画笔类型都是从该类继承。画笔分类说 明纯色画笔同SolidColorBrush实现,通过Color属性设置画笔颜色渐变画笔包括:LinearGradientBrush:线性渐变画笔。填充的区域从一种颜色逐渐过渡到另一种颜色RadialGradientBrush:径向渐变画笔,也叫仿射渐变画笔。填充的区域
47、颜色以椭圆为边界,从原点开始由内向外逐步扩散平铺画笔基类为TitleBrush,扩充类包括:ImageBrush:图像画笔。用图像填充一个区域DrawingBrush:使用GeometryDrawing、ImageDrawing或VideoDrawing填充一个区域VisualBrush:使用DrawingVisual、Viewport3DVisual或ContainerVisual填充一个区域VideoBrush:用视频填充一个区域画笔资源将画笔作为XAML资源来处理427.5 画笔(画笔(Brush) l利用利用WPF设计器和属性窗口设置画笔类型设计器和属性窗口设置画笔类型 在在XAML或
48、者文档大纲中选中某个控件后,可直接利用或者文档大纲中选中某个控件后,可直接利用【属性属性】窗口设置窗口设置画笔类型。画笔类型。 纯色画笔 渐变画笔 平铺画笔 437.5 画笔(画笔(Brush) l纯色画笔(纯色画笔(SolidColorBrush) 创建创建SolidColorBrush实例后,可通过实例后,可通过Color类提供的方法设置类提供的方法设置Color属性属性。例如。例如SolidColorBrush scb = new SolidColorBrush();SolidColorBrush scb = new SolidColorBrush();scb.Color = Color
49、.FromArgb(0 xFF, 0 xFF, 0 x0, 0 x0);scb.Color = Color.FromArgb(0 xFF, 0 xFF, 0 x0, 0 x0);button1.Background = scb; button1.Background = scb; l线性渐变画笔(线性渐变画笔(LinearGradientBrush) LinearGradientBrush使用沿一条直线(即渐变轴)定义的渐变绘制区域。使用沿一条直线(即渐变轴)定义的渐变绘制区域。可以使用可以使用GradientStop对象指定渐变的颜色及其在渐变轴上的位置,还可对象指定渐变的颜色及其在渐变轴上
50、的位置,还可以修改渐变轴创建水平和垂直渐变并反转渐变方向。如果不指定渐变方向,以修改渐变轴创建水平和垂直渐变并反转渐变方向。如果不指定渐变方向,LinearGradientBrush默认创建对角线渐变。默认创建对角线渐变。 447.5 画笔(画笔(Brush) l线性渐变画笔(线性渐变画笔(LinearGradientBrush) !- - 457.5 画笔(画笔(Brush) l线性渐变画笔(线性渐变画笔(LinearGradientBrush) 通过修改画笔的通过修改画笔的StartPoint和和EndPoint创建水平和垂直渐变效果创建水平和垂直渐变效果 467.5 画笔(画笔(Brus
51、h) l径向渐变画笔(径向渐变画笔(RadialGradientBrush) 以一个椭圆为边界,从中心点开始由内向外逐渐填充渐变的颜色。以一个椭圆为边界,从中心点开始由内向外逐渐填充渐变的颜色。画笔由原点(画笔由原点(GradientOrigin)和辐射到的范围()和辐射到的范围(Center、RadiusX、RadiusY)来定义。)来定义。渐变从原点(渐变从原点(GradientOrigin)开始由强到弱逐渐向外围辐射,中心点和半径()开始由强到弱逐渐向外围辐射,中心点和半径(Center、RadiusX、RadiusY)指定辐射到的椭圆范围,)指定辐射到的椭圆范围,Center属性指定椭
52、圆的圆心。渐变轴上的渐变属性指定椭圆的圆心。渐变轴上的渐变停止点指定辐射的颜色和偏移量。例如:停止点指定辐射的颜色和偏移量。例如: RadialGradientBrush GradientOrigin=0.5,0.5 Center=0.5,0.5 RadiusX=0.5 RadiusY=0.5 477.5 画笔(画笔(Brush) l利用利用WPF设计器实现画笔变换设计器实现画笔变换 在在WPF设计器中,可直接用鼠标对各种控件进行平移(设计器中,可直接用鼠标对各种控件进行平移(Translate)、旋转)、旋转(Rotate)、缩放()、缩放(Scale)、扭曲()、扭曲(Skew)、反转()
53、、反转(Flip)等变换)等变换 48Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件497.6 属性属性 l依赖项属性和附加属性依赖项属性和附加属性 属性(属性(Property)是类对外公开的字段,用)是类对外公开的字段,用get和和set访问器实现。访问器实现。l依赖项属性依赖项属性 为了用为了用XAML描述动态变化的属性值以及用描述动态变化的属性值以及用XAML实现数据绑定,每个实现数据绑定,每个控件又用控件又用DependencyPr
54、operty类对类对CLR属性做了进一步的封装和扩展,属性做了进一步的封装和扩展,这些与这些与CLR属性对应的封装和扩展后的属性称为属性对应的封装和扩展后的属性称为依赖项属性依赖项属性。主要用于样式、主题、数据绑定、动画、元数据重写、属性值继承以主要用于样式、主题、数据绑定、动画、元数据重写、属性值继承以及及WPF设计器集成等情况设计器集成等情况 。 507.6 属性属性 l依赖项属性依赖项属性 控件的每个控件的每个CLR属性都有与其对应的依赖项属性,反之亦然。属性都有与其对应的依赖项属性,反之亦然。在在XAML以及以及【属性属性】窗口中,都是用依赖项属性来描述控件窗口中,都是用依赖项属性来描
55、述控件的某个属性,此时的某个属性,此时WPF会自动维护与该依赖项属性对应的会自动维护与该依赖项属性对应的CLR属性。属性。在在C#代码中,开发人员绝大部分情况下都是使用代码中,开发人员绝大部分情况下都是使用CLR属性获取属性获取或修改控件的某个属性值,此时系统会自动处理与该或修改控件的某个属性值,此时系统会自动处理与该CLR属性属性对应的依赖项属性。只有在实现动画等特殊功能时,才需要设对应的依赖项属性。只有在实现动画等特殊功能时,才需要设置系统无法判断该如何处理的依赖项属性的相关信息。置系统无法判断该如何处理的依赖项属性的相关信息。 517.6 属性属性 l依赖项属性和附加属性依赖项属性和附加
56、属性 附加属性附加属性 可以在某个子元素上指定其父元素的属性,以这种方式声明的属性称为附可以在某个子元素上指定其父元素的属性,以这种方式声明的属性称为附加属性。加属性。定义附加属性的一般形式为定义附加属性的一般形式为父元素类型名父元素类型名. .属性名属性名例如:例如: Hello Hello 527.6 属性属性 l利用样式资源控制控件的属性利用样式资源控制控件的属性 XAML的样式控制分为内联式、嵌入式(用框架元素样式和应用程序样式的样式控制分为内联式、嵌入式(用框架元素样式和应用程序样式实现)和外部链接式(用资源字典实现)实现)和外部链接式(用资源字典实现) 。简单来说,如果某些控件具有
57、相同的属性,在其父级元素的资源中用简单来说,如果某些控件具有相同的属性,在其父级元素的资源中用Style单独设置这些属性的样式以后,这些控件就会自动应用这些样式。单独设置这些属性的样式以后,这些控件就会自动应用这些样式。 【例例7-7】演示在演示在WPF应用程序中如何利用样式简化控件的属性应用程序中如何利用样式简化控件的属性设置。设置。 53Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性属性7.7 事件事件547.7 事件事件 lWPF事件模型事件模型 事件是指
58、由系统事先设定的、能被控件识别和响应的动作,如单击鼠标、事件是指由系统事先设定的、能被控件识别和响应的动作,如单击鼠标、按下某个键等。按下某个键等。在在XAML中注册事件中注册事件 在在XAML中,声明事件的一般形式为中,声明事件的一般形式为事件名事件名=事件处理程序名事件处理程序名 或者:或者:子元素类型名子元素类型名. .事件名事件名=事件处理程序名事件处理程序名 既可以通过事件列表附加事件。例如:既可以通过事件列表附加事件。例如:也可以在也可以在XAML中直接键入事件名称。中直接键入事件名称。 557.7 事件事件 lWPF事件模型事件模型 在在C#代码中注册事件代码中注册事件 利用利用
59、+=注册事件,利用注册事件,利用-=取消注册取消注册 ,例如:,例如:public MainWindow()public MainWindow() InitializeComponent(); InitializeComponent(); Button1.MouseDoubleClick += Button1_MouseDoubleClick; Button1.MouseDoubleClick += Button1_MouseDoubleClick; void Button1_MouseDoubleClick(object sender, MouseButtonEventArgs e)void
60、 Button1_MouseDoubleClick(object sender, MouseButtonEventArgs e) / /事件处理代码事件处理代码 567.7 事件事件 lWPF事件模型事件模型 事件处理程序中的参数事件处理程序中的参数 所有所有WPF事件处理程序默认都提供两个参数。例如:事件处理程序默认都提供两个参数。例如:private void OkButton_Click_1(object sender, RoutedEventArgs e)private void OkButton_Click_1(object sender, RoutedEventArgs e) 参数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- OBD技术在2024年汽车维修培训中的应用与实践
- 2024年餐厅特色:《水果拼盘》教案应用
- 《自相矛盾》优课一等奖课件
- 大学劳动教育课程内容1
- 模拟电子技术课件chapter1
- 九年级美术下册3意韵中国画教案冀美版
- 2024-2025学年新教材高中物理第十一章电路及其应用第三节第2课时实验2金属丝电阻率的测量教案新人教版必修3
- 高中历史第2单元工业文明的崛起和对中国的冲击第9课改变世界的工业革命学业达标含解析岳麓版必修2
- 2024-2025学年新教材高中生物第2章基因和染色体的关系第1节第1课时减数分裂课后习题含解析新人教版必修2
- 九年级物理全册11.6不同物质的导电性能习题5新版北师大版
- 机械厂加工车间变电所初步设计
- 六年级上册道德与法治知识点重点归纳总结
- 危货运输企业安全生产双体系安全风险分级管控管理制度
- Python语言基础与应用学习通课后章节答案期末考试题库2023年
- XXXX年度煤矿机电设备检修计划
- 乙腈安全技术说明书(msds)
- 人教版英语七年级下册Unit11-12单元测试题(有答案)
- Excel水力计算展示-消力坎式消力池水力计算演示
- 某县精神病专科医院的可行性研究报告书
- 大型沉井设计施工技术
- 幽门螺旋杆菌新认识与治疗
评论
0/150
提交评论