




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教育部普通高等教育十二五国家级规划教材教育部普通高等教育十二五国家级规划教材C#程序设计教程程序设计教程第第3版版第第7章章 WPF应用程序入门应用程序入门2Ch7 WPF应用程序入门应用程序入门7.1 WPF应用程序和应用程序和XAML标记标记7.2 窗口和对话框窗口和对话框7.3 颜色颜色7.4 形状形状7.5 画笔画笔7.6 属性和事件属性和事件37.1 WPF应用程序和应用程序和XAML标记标记lWPF(Windows Presentation Foundation,Windows呈现呈现基础)是微软推出的基于基础)是微软推出的基于DirectX和和GPU加速来实现的图形界面加速来实现
2、的图形界面显示技术显示技术。其其优势在于界面呈现,优势在于界面呈现,主要用主要用它来开发在客户端运行的桌面应用它来开发在客户端运行的桌面应用程序程序。WPF应用程序使用应用程序使用XAML来描述界面来描述界面。lWPF运行仍然从运行仍然从Main方法入口方法入口在在App.xaml.cs文件中,可以查看隐藏的文件中,可以查看隐藏的Main方法方法在在App.xaml文件中,可以通过更改文件中,可以通过更改StartupUri属性的值改变起始属性的值改变起始窗体。窗体。7.1 WPF应用程序和应用程序和XAML标记标记lApp类类App类是从类是从Application类继承的类类继承的类。通过
3、。通过App类,可以定义在整类,可以定义在整个应用程序范围内都可以使用的资源和公共属性个应用程序范围内都可以使用的资源和公共属性。u例如:例如:Application current = Application current = App.CurrentApp.Current; ;App类常用类常用的的属性、方法和事件属性、方法和事件457.1 WPF应用程序和应用程序和XAML标记标记l WPF应用程序的关闭模式应用程序的关闭模式调用调用Shutdown方法会立即关闭方法会立即关闭WPF应用程序。应用程序。Shutdown方法的典型用法为方法的典型用法为App.Current.Shutdow
4、n();若要控制关闭模式,可以使用若要控制关闭模式,可以使用Shutdown方法的重载形式,使用方法的重载形式,使用ShutdownMode枚举枚举指定应用程序的关闭模式。指定应用程序的关闭模式。uOnLastWindowCloseOnLastWindowCloseuOnMainWindowCloseOnMainWindowCloseuOnExplicitShutDownOnExplicitShutDownl【例【例7-1】 演示如何创建演示如何创建WPF应用程序应用程序67.1 WPF应用程序和应用程序和XAML标记标记lXAML是一种基于是一种基于XML的标记性语言,默认的标记性语言,默认
5、UTF-8编码。编码。lx:前缀编程构造前缀编程构造xmlns特性声明特性声明XAML默认的命名空间;默认的命名空间;xmlns:x用于命名空间映射。用于命名空间映射。u一一个个XAMLXAML文件(扩展名为文件(扩展名为. .xamlxaml的文件)只能有一个根元素。的文件)只能有一个根元素。 x:Class用于为代码隐藏类指定用于为代码隐藏类指定CLR命名空间和类名命名空间和类名 ;Name特性指定对象的名称属性。特性指定对象的名称属性。u Button Content=Button /X:Name特性为运行时(特性为运行时(C#代码引用代码引用XAML元素元素)使用的)使用的XAML元素
6、提供标识。元素提供标识。uButton /7.1 WPF应用程序和应用程序和XAML标记标记l在在XAML中映射自定义命名空间中映射自定义命名空间 若在若在XAML中引用自定义对象,就必须在中引用自定义对象,就必须在XAML中映射自定义命中映射自定义命名空间名空间。l例如:例如:第一步:定义第一步:定义公共公共类类MyClass(假设在假设在命名空间命名空间Ch07.cs下)下)第二步:在第二步:在TestWindow.xaml中引用中引用MyClass 时,需要在根元时,需要在根元素中为其指定素中为其指定XAML命名空间。命名空间。uwindow 其中其中c c为自定义前缀,也可以换成其他字
7、符串为自定义前缀,也可以换成其他字符串2021年11月20日星期六7在在XAML中映射自定义命名空间中映射自定义命名空间 2021年11月20日星期六87.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 XAML的语法与的语法与HTML的语法非常相似,即都是利用元素、特性的语法非常相似,即都是利用元素、特性(Attribute)和属性()和属性(Property)来描述元素对象的各种要素)来描述元素对象的各种要素XAML最基本的语法为:最基本的语法为:u 或者:或者:u ” /XAML中的对象元素名称、特性名称以及属性名称都中的对象元素名称、特性名称以及属性名称都区分
8、大小写区分大小写。9107.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 l对象元素语法对象元素语法 对象是指类的实例,在对象是指类的实例,在XAML中用对象元素来描述。中用对象元素来描述。u例如:例如: / l特性语法特性语法 用特性(用特性(Attribute)来描述对象的属性()来描述对象的属性(Property),特性名和特性值之),特性名和特性值之间用间用=分隔,特性的值始终用包含在引号中的字符串来指定,引号默认用分隔,特性的值始终用包含在引号中的字符串来指定,引号默认用双引号,也可以是单引号,原则是双引号,也可以是单引号,原则是“值值”两边的引号必须匹配
9、两边的引号必须匹配 。u例如例如: 1/ 特性语法还可用于描述事件成员特性语法还可用于描述事件成员 。u例如:例如:Button Click=Click Me!Click Me! 117.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 属性语法:仅仅用特性语法无法来描述对象的某些属性,可以使用属性属性语法:仅仅用特性语法无法来描述对象的某些属性,可以使用属性语法。语法。一般格式为:一般格式为: 例如:例如:Button Background=Blue Foreground=Red Margin=73,108,74,115 快捷菜单项快捷菜单项11 快捷菜单项快捷菜单项
10、22 127.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 集合语法集合语法如果某个属性采用集合类型,可以使用集合语法如果某个属性采用集合类型,可以使用集合语法 。例如:。例如: Offset=0.0 Color=Red / Offset=1.0 Color=Blue / / / / XAML内容属性内容属性 内容内容属性的用途是为了简化标记,以便更直观地嵌套父属性的用途是为了简化标记,以便更直观地嵌套父/子元素。例子元素。例如:如: This is a Text BoxThis is a Text Box 相当于:相当于: Text=This is a Text
11、Box/137.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 内容属性和集合语法组合内容属性和集合语法组合 按钮按钮11 按钮按钮22类型转换器类型转换器 将用字符串进行设置的特性值转换为其他对象类型或基元值。例如:将用字符串进行设置的特性值转换为其他对象类型或基元值。例如:Button Margin=10,20,30,40 Content= / 相当于相当于: :Button Content= 147.1 WPF应用程序和应用程序和XAML标记标记lXAML基本语法基本语法 XAML中的空白处理中的空白处理 uXAMLXAML中的空白字符包括空格、换行符和制表符。
12、中的空白字符包括空格、换行符和制表符。默认情况下,默认情况下,XAML处理器会将所有空白字符(空格、换行符和制表处理器会将所有空白字符(空格、换行符和制表符)自动转换为空格。另外,处理符)自动转换为空格。另外,处理XAML时连续的空格将被替换为一个时连续的空格将被替换为一个空格。空格。如果希望保留文本字符串中的空格,可以在该元素的开始标记内添加如果希望保留文本字符串中的空格,可以在该元素的开始标记内添加xml:space=preserve特性。但是,要避免在根级别指定该特性,否则特性。但是,要避免在根级别指定该特性,否则会影响会影响XAML处理的性能。处理的性能。 157.2 窗口和对话框窗口
13、和对话框lWPF窗口窗口 窗口的类型:窗口的类型:WPF窗口(窗口)和窗口(窗口)和WPF导航窗口(导航窗口(WPF页)页)窗口分类窗口分类WPF窗口由非工作区和工作区两部分构成窗口由非工作区和工作区两部分构成 ,非工作区主要包括图标、标,非工作区主要包括图标、标题、系统菜单、按钮和边框题、系统菜单、按钮和边框 。 u标准窗口:包含工作区和非工作区的窗口标准窗口:包含工作区和非工作区的窗口 u无边框窗口:只有工作区部分无边框窗口:只有工作区部分 u浮动窗口:非工作区的右上角只有关闭按钮,不包括最小化、最浮动窗口:非工作区的右上角只有关闭按钮,不包括最小化、最大化和还原按钮大化和还原按钮 u工具
14、窗口:比浮动窗口多了一个工具窗口:比浮动窗口多了一个“铆钉铆钉”按钮。按钮。 167.2 窗口和对话框窗口和对话框l创建并显示新窗口创建并显示新窗口在在C#代码中调用代码中调用Show方法或者方法或者ShowDialog方法显示窗体方法显示窗体。 u无模式窗口:调用无模式窗口:调用ShowShow方法,窗体显示后会立即执行该方法后面的方法,窗体显示后会立即执行该方法后面的语句,打开的窗口不会阻止用户与应用程序中的其他窗口交互。语句,打开的窗口不会阻止用户与应用程序中的其他窗口交互。u模式窗口:调用模式窗口:调用ShowDialogShowDialog方法方法 ,在该窗口关闭之前,应用程序,在该
15、窗口关闭之前,应用程序中的所有其他窗口都会被禁用,仅在该窗口关闭后,才继续执行中的所有其他窗口都会被禁用,仅在该窗口关闭后,才继续执行ShowDialogShowDialog方法后面的代码。方法后面的代码。对于对于“无模式无模式”窗口,调用窗口,调用Hide方法即可将其隐藏起来。方法即可将其隐藏起来。 177.2 窗口和对话框窗口和对话框l关闭窗口关闭窗口 在在C#代码中,直接调用代码中,直接调用Close方法即可关闭当前打开的窗口方法即可关闭当前打开的窗口当窗口关闭时当窗口关闭时,会,会引发两个事件:引发两个事件:Closing事件事件和和Closed事件。事件。 l窗口关联窗口关联 通过通
16、过设置附属窗口的设置附属窗口的Owner属性让一个窗口拥有另一个窗口属性让一个窗口拥有另一个窗口 。例如:例如:Window Window ownedWindowownedWindow = new Window(); = new Window();ownedWindow.OwnerownedWindow.Owner = this; = this;ownedWindow.ShowownedWindow.Show();(); 通过这种方式建立关联之后,附属窗口就可以通过通过这种方式建立关联之后,附属窗口就可以通过Owner属性的值来引用属性的值来引用它的所有者窗口,所有者窗口也可以通过它的所有者窗
17、口,所有者窗口也可以通过OwnedWindows属性的值来发属性的值来发现它拥有的全部窗口。现它拥有的全部窗口。 187.2 窗口和对话框窗口和对话框l在主窗口显示前先显示登录窗口或者欢迎窗口在主窗口显示前先显示登录窗口或者欢迎窗口 在主窗口显示前先显示另一个窗口,比如登录窗口或者欢迎窗口,当用户在主窗口显示前先显示另一个窗口,比如登录窗口或者欢迎窗口,当用户关闭登录窗口或者欢迎窗口后再显示主窗口,要达到这个目的,可以通过关闭登录窗口或者欢迎窗口后再显示主窗口,要达到这个目的,可以通过主窗口的主窗口的SourceInitialized事件事件来实现。来实现。 【例例7-2】 演示如何在主窗口显
18、示前先显示登录窗口,同时演示窗演示如何在主窗口显示前先显示登录窗口,同时演示窗口的基本用法。口的基本用法。 197.2 窗口和对话框窗口和对话框l窗口的外观和行为窗口的外观和行为窗口大小窗口大小u窗口大小由窗口大小由WidthWidth、MinWidthMinWidth、MaxWidthMaxWidth、HeightHeight、MinHeightMinHeight、MaxHeightMaxHeight以及以及SizeToContentSizeToContent等多个属性确定。等多个属性确定。窗口位置窗口位置u通过通过LeftLeft和和TopTop属性获取或更改窗口相对于屏幕坐标的属性获取或
19、更改窗口相对于屏幕坐标的x x和和y y位置。位置。 uWindowStartupLocationWindowStartupLocation属性设置窗口第一次显示时的初始位置,枚属性设置窗口第一次显示时的初始位置,枚举值有:举值有:ManualManual(默认)、(默认)、CenterScreenCenterScreen、CenterOwnerCenterOwner。 207.2 窗口和对话框窗口和对话框l窗口顺序窗口顺序表示从屏幕内向外方向显示顺序的位置,称为表示从屏幕内向外方向显示顺序的位置,称为z顺序。顺序。u有两种有两种z z顺序:正常顺序:正常z z顺序和最顶层顺序和最顶层z z顺
20、序。顺序。在最顶层在最顶层z顺序中的窗口总是位于正常顺序中的窗口总是位于正常z顺序中的窗口之上。顺序中的窗口之上。通过将窗口的通过将窗口的Topmost属性设置为属性设置为true可以使窗口位于最顶层可以使窗口位于最顶层z顺序中。顺序中。 217.2 窗口和对话框窗口和对话框l对话框对话框消息框消息框调用调用MessageBox类的静态类的静态Show方法来显示消息框方法来显示消息框 。MessageBox类的静态类的静态Show方法提供了多种重载形式,常用的重方法提供了多种重载形式,常用的重载形式有:载形式有:upublic static MessageBoxResult Show(stri
21、ng text)public static MessageBoxResult Show(string text)upublic static MessageBoxResult Show(string text, public static MessageBoxResult Show(string text, string caption)string caption)upublic static MessageBoxResult Show(string text, public static MessageBoxResult Show(string text, string caption,
22、MessageBoxButton buttons, string caption, MessageBoxButton buttons, MessageBoxImage icon) MessageBoxImage icon) 227.2 窗口和对话框窗口和对话框【例例7-3】 演示如何在演示如何在WPF应用程序中弹出消息框以及获取消应用程序中弹出消息框以及获取消息框返回的值。息框返回的值。 237.2 窗口和对话框窗口和对话框l通用对话框通用对话框OpenFileDialog对话框:用户选择一个或多个要打开的文件的对话框:用户选择一个或多个要打开的文件的文件名。文件名。SaveFileDialo
23、g对话框:用户选择一个要将文件另存为的文件对话框:用户选择一个要将文件另存为的文件名。名。PrintDialog对话框:用户选择和配置打印机并打印文档。对话框:用户选择和配置打印机并打印文档。247.2 窗口和对话框窗口和对话框lWPF页和页面导航页和页面导航 1、在、在WPF窗口中承载窗口中承载Page 用用C#代码将代码将WPF窗口的窗口的Content属性设置为页的实例来承载属性设置为页的实例来承载WPF页页,即将,即将Window作为页的宿主窗口作为页的宿主窗口。例如例如:Window w = new Window();Window w = new Window();Page1 p =
24、 new Page1();Page1 p = new Page1();w.Contentw.Content = p; = p;w.Showw.Show();();这种方式这种方式只能用只能用C#代码代码实现,而且承载的页没有导航功能,实现,而且承载的页没有导航功能,页中的超链接也不会起作用,因此页中的超链接也不会起作用,因此在实际应用中很少在实际应用中很少这样用。这样用。257.2 窗口和对话框窗口和对话框lWPF页和页面导航页和页面导航 2、在、在NavigationWindow中承载中承载Page 用用C#代码将代码将NavigationWindow窗口的窗口的Content属性设置为页的
25、实例来属性设置为页的实例来承载承载WPF页,即将页,即将NavigationWindow作为页的宿主窗口。作为页的宿主窗口。 例如:例如:Window w = new Window w = new System.Windows.Navigation.NavigationWindow();System.Windows.Navigation.NavigationWindow();w.Content = new PageExamples.Page1();w.Content = new PageExamples.Page1();w.Show();w.Show();采用这种方式时,可以在页中设置导航窗口
26、(采用这种方式时,可以在页中设置导航窗口(NavigationWindow)的标)的标题以及窗口大小。也可以在题以及窗口大小。也可以在C#代码中使用代码中使用NavigationService类类提供的静提供的静态方法实现导航功能。态方法实现导航功能。267.2 窗口和对话框窗口和对话框lWPF页和页面导航页和页面导航 2、在、在NavigationWindow中承载中承载Page Page的常用属性如下。的常用属性如下。uWindowTitleWindowTitle:设置导航窗口的标题。:设置导航窗口的标题。uWindowWidthWindowWidth和和WindowHeightWindo
27、wHeight:设置导航窗口的宽度和高度。:设置导航窗口的宽度和高度。uShowsNavigationUIShowsNavigationUI:falsefalse表示不显示导航条,表示不显示导航条,truetrue表示显示导表示显示导航条。航条。uNavigationServiceNavigationService属性:获取该页的宿主窗口中管理导航服务属性:获取该页的宿主窗口中管理导航服务的对象,利用该对象可实现前进、后退、清除导航记录等操作。的对象,利用该对象可实现前进、后退、清除导航记录等操作。使用举例:使用举例:uReportPage expenseReportPage = new Re
28、portPage (); ReportPage expenseReportPage = new ReportPage (); this.NavigationService.Navigate(expenseReportPage);this.NavigationService.Navigate(expenseReportPage);277.2 窗口和对话框窗口和对话框lWPF页和页面导航页和页面导航 3、在、在Frame中承载中承载Page在在Frame元素中将元素中将Source属性设置为导航到的页属性设置为导航到的页 ,在这种方式下,既,在这种方式下,既可以用可以用XAML加载页并实现导航,也
29、可以用加载页并实现导航,也可以用C#代码来实现。代码来实现。 例如:例如:XAMLXAML:Frame Name=frame1 Source=Page1.xaml Background=#FFF9F4D4 /C#C#:frame1.Source = new Uri(Page1.xaml, frame1.Source = new Uri(Page1.xaml, UriKind.RelativeUriKind.Relative););287.3 颜色和形状颜色和形状WPF在在System.Windows.dll中的中的System.Windows.Media命名空间下,分命名空间下,分别提供了别提
30、供了Brushes类、类、Colors类和类和Color结构,这几种形式都可以用来表示结构,这几种形式都可以用来表示颜色。颜色。 Brushs类和类和Colors类类 在在System.Windows.dll中的中的System.Windows.Media命名空间下的命名空间下的Brushes类和类和Colors类都利用静态属性提供了预定义的颜色,这些颜色在类都利用静态属性提供了预定义的颜色,这些颜色在各种应用程序中都可以使用。如设置控件的前景色、背景色、边框色等。各种应用程序中都可以使用。如设置控件的前景色、背景色、边框色等。BrushesBrushes类的类的C#C#语法为语法为publi
31、c sealed class Brushespublic sealed class BrushesColorsColors类的类的C#C#语法为语法为public sealed class Colors public sealed class Colors 297.3 颜色和形状颜色和形状 Color结构结构 WPF 在在System.Windows.Media命名空间下提供了一个命名空间下提供了一个Color结构,该结构,该结构通过结构通过A(透明度)、(透明度)、R(红色通道)、(红色通道)、G(绿色通道)和(绿色通道)和B(蓝色通道(蓝色通道)的组合来创建各种自定义的颜色。的组合来创建各
32、种自定义的颜色。一般形式为一般形式为“#rrggbb”或者或者“#aarrggbb”,其中,其中#表示十六进制,表示十六进制,aa表表示透明度,示透明度,rr表示红色通道,表示红色通道,gg表示绿色通道,表示绿色通道,bb表示蓝色通道。表示蓝色通道。常用方法:常用方法: Color.FromArgb(int red,int green,int blue);307.3 颜色和形状颜色和形状 形状(形状(Shape)是具有界面交互功能的几何图形的封装形式。)是具有界面交互功能的几何图形的封装形式。System.Windows.Shapes命名空间定义了呈现命名空间定义了呈现2D几何图形对象的类,这
33、几何图形对象的类,这些类都继承自同一个些类都继承自同一个Shape类类 。l形状控件共有的属性形状控件共有的属性 形状控件共有的属性都是在形状控件共有的属性都是在Shape类中定义的。由于所有形状都是从类中定义的。由于所有形状都是从Shape类继承的,所以形状控件都可以使用这些属性类继承的,所以形状控件都可以使用这些属性 。属 性说 明Stroke获取或设置指定形状轮廓绘制方式的BrushStrokeThickness获取或设置指定形状轮廓的宽度Fill获取或设置指定形状内部填充方式的BrushStretch用枚举值说明如何填充形状的内部。可选的枚举值有:None:不拉伸。内容保持原始大小Fi
34、ll(默认值):调整内容的大小以填充目标尺寸,不保留纵横比Uniform:在保留内容原有纵横比的同时调整内容的大小至目标尺寸UniformToFill:在保留内容原有纵横比的同时调整内容的大小,并填充至目标尺寸。如果目标矩形的纵横比不同于源矩形的纵横比,则对源内容进行剪裁以适合目标尺寸317.3 颜色和形状颜色和形状l矩形(矩形(Rectangle) 形状控件共有的属性都是在形状控件共有的属性都是在Shape类中定义的。由于所有形状都是从类中定义的。由于所有形状都是从Shape类继类继承的,所以形状控件都可以使用这些属性承的,所以形状控件都可以使用这些属性 。Rectangle类用于绘制矩形。
35、例如:类用于绘制矩形。例如: Rectangle Width=100 Height=100 Fill=Blue Stroke=Red Canvas.Top=20 Canvas.Left=20 StrokeThickness=3 /【例例7-6】演示矩形控件的基本用法。演示矩形控件的基本用法。 327.3 颜色和形状颜色和形状l椭圆(椭圆(Ellipse) Ellipse类用于绘制椭圆,当类用于绘制椭圆,当Width和和Height相等时,绘制的实际上相等时,绘制的实际上是一个圆。例如:是一个圆。例如: Ellipse Height=75 Width=75 Fill=#FFFFFF00 Stro
36、keThickness=5 Stroke=#FF0000FF/这段这段XAML代码在设计界面中看到的效果如下图所示。代码在设计界面中看到的效果如下图所示。 2021年11月20日星期六337.3 颜色和形状颜色和形状l其他基本形状其他基本形状(可以自学)(可以自学) Line(直线)(直线)Line X1=10 Y1=10 X2=50 Y2=50 Stroke=Black StrokeThickness=4 / PolyLine(多条依次相连的直线)(多条依次相连的直线)PolyLine用于用于定义多个点,然后将这些点依次用直线相用于用于定义多个点,然后将这些点依次用直线相连,从而构成各种折线
37、形状。例如:连,从而构成各种折线形状。例如: Polyline Points=50,25 0,100 100,100 50,25 Canvas.Left=75 Canvas.Top=50 / 2021年11月20日星期六347.3 颜色和形状颜色和形状l Polygon(多边形)(多边形)该控件和该控件和PolyLine用法相似,但它会自动将最后用法相似,但它会自动将最后1个点和个点和第第1个点连起来。例如:个点连起来。例如: Polygon Points=300,200 400,125 400,275 =2 Opacity=0.4/ / 357.4 画笔(画笔(Brush) 在在WPF应用程
38、序中,画笔(应用程序中,画笔(Brush)是所有控件都具有的基本功能。最常)是所有控件都具有的基本功能。最常见的是利用画笔设置控件的前景色、背景色,填充渐变色、图像和图案。见的是利用画笔设置控件的前景色、背景色,填充渐变色、图像和图案。l画笔分类画笔分类 画笔的所有类型都在画笔的所有类型都在System.Windows.Media命名空间下,命名空间下,Brush类是各类是各种画笔的抽象基类,其他画笔类型都是从该类继承。种画笔的抽象基类,其他画笔类型都是从该类继承。画笔分类说 明纯色画笔同SolidColorBrush实现,通过Color属性设置画笔颜色渐变画笔包括:LinearGradien
39、tBrush:线性渐变画笔。填充的区域从一种颜色逐渐过渡到另一种颜色RadialGradientBrush:径向渐变画笔,也叫仿射渐变画笔。填充的区域颜色以椭圆为边界,从原点开始由内向外逐步扩散平铺画笔基类为TitleBrush,扩充类包括:ImageBrush:图像画笔。用图像填充一个区域DrawingBrush:使用GeometryDrawing、ImageDrawing或VideoDrawing填充一个区域VisualBrush:使用DrawingVisual、Viewport3DVisual或ContainerVisual填充一个区域VideoBrush:用视频填充一个区域画笔资源将画
40、笔作为XAML资源来处理367.4 画笔(画笔(Brush) l利用利用WPF设计器和属性窗口设置画笔类型设计器和属性窗口设置画笔类型 在在XAML或者文档大纲中选中某个控件后,可直接利用或者文档大纲中选中某个控件后,可直接利用【属性属性】窗口设置窗口设置画笔类型。画笔类型。 纯色画笔 渐变画笔 平铺画笔 377.4 画笔(画笔(Brush) l纯色画笔(纯色画笔(SolidColorBrush) 创建创建SolidColorBrush实例后,可通过实例后,可通过Color类提供的方法设置类提供的方法设置Color属属性。例如性。例如SolidColorBrush scb = new Soli
41、dColorBrush();SolidColorBrush scb = new SolidColorBrush();scb.Color = Color.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使用沿一条直线(即渐变轴)定义的渐变绘制区域。使用沿一条直
42、线(即渐变轴)定义的渐变绘制区域。可以使用可以使用GradientStop对象指定渐变的颜色及其在渐变轴上的位置,还可对象指定渐变的颜色及其在渐变轴上的位置,还可以修改渐变轴创建水平和垂直渐变并反转渐变方向。如果不指定渐变方向,以修改渐变轴创建水平和垂直渐变并反转渐变方向。如果不指定渐变方向,LinearGradientBrush默认创建对角线渐变。默认创建对角线渐变。 387.4 画笔(画笔(Brush) l线性渐变画笔(线性渐变画笔(LinearGradientBrush) !- - 397.4 画笔(画笔(Brush) l线性渐变画笔(线性渐变画笔(LinearGradientBrush
43、) 通过修改画笔的通过修改画笔的StartPoint和和EndPoint创建水平和垂直渐变效果创建水平和垂直渐变效果 407.4 画笔(画笔(Brush) l径向渐变画笔(径向渐变画笔(RadialGradientBrush) 以一个椭圆为边界,从中心点开始由内向外逐渐填充渐变的颜色。以一个椭圆为边界,从中心点开始由内向外逐渐填充渐变的颜色。画笔由原点(画笔由原点(GradientOrigin)和辐射到的范围()和辐射到的范围(Center、RadiusX、RadiusY)来定义。渐变从原点(来定义。渐变从原点(GradientOrigin)开始由强到弱逐渐向外围辐射,中心点和)开始由强到弱逐
44、渐向外围辐射,中心点和半径(半径(Center、RadiusX、RadiusY)指定辐射到的椭圆范围,)指定辐射到的椭圆范围,Center属性指定属性指定椭圆的圆心。渐变轴上的渐变停止点指定辐射的颜色和偏移量。例如:椭圆的圆心。渐变轴上的渐变停止点指定辐射的颜色和偏移量。例如: RadialGradientBrush GradientOrigin=0.5,0.5 Center=0.5,0.5 RadiusX=0.5 RadiusY=0.5 417.4 画笔(画笔(Brush) l利用利用WPF设计器实现画笔变换设计器实现画笔变换 在在WPF设计器中,可直接用鼠标对各种控件进行平移(设计器中,可
45、直接用鼠标对各种控件进行平移(Translate)、旋转)、旋转(Rotate)、缩放()、缩放(Scale)、扭曲()、扭曲(Skew)、反转()、反转(Flip)等变换)等变换 427.5 属性属性 l依赖项属性和附加属性依赖项属性和附加属性 属性(属性(Property)是类对外公开的字段,用)是类对外公开的字段,用get和和set访问器实现。简访问器实现。简称称CLR属性。属性。l依赖项属性依赖项属性 为了用为了用XAML描述动态变化的属性值以及用描述动态变化的属性值以及用XAML实现数据绑定,每实现数据绑定,每个控件又用个控件又用DependencyProperty类对类对CLR属性
46、做了进一步的封装和扩属性做了进一步的封装和扩展展,这些与,这些与CLR属性对应的封装和扩展后的属性称为属性对应的封装和扩展后的属性称为依赖项属性依赖项属性。主要用于样式、主题、数据绑定、动画、元数据重写、属性值继承以主要用于样式、主题、数据绑定、动画、元数据重写、属性值继承以及及WPF设计器集成等情况设计器集成等情况 。 437.5 属性属性 l依赖项属性依赖项属性 控件的每个控件的每个CLR属性都有与其对应的依赖项属性属性都有与其对应的依赖项属性,反之亦然。,反之亦然。在在XAML以及以及【属性属性】窗口窗口中,都是用中,都是用依赖项属性依赖项属性来描述控件来描述控件的某个属性,此时的某个属
47、性,此时WPF会自动维护与该依赖项属性对应的会自动维护与该依赖项属性对应的CLR属性。属性。在在C#代码中,开发人员绝大部分情况下都是使用代码中,开发人员绝大部分情况下都是使用CLR属性获取属性获取或修改控件的某个属性值,此时系统会自动处理与该或修改控件的某个属性值,此时系统会自动处理与该CLR属性属性对应的依赖项属性。只有在实现动画等特殊功能时,才需要设对应的依赖项属性。只有在实现动画等特殊功能时,才需要设置系统无法判断该如何处理的依赖项属性的相关信息。置系统无法判断该如何处理的依赖项属性的相关信息。 447.5 属性属性 l依赖项属性和附加属性依赖项属性和附加属性 附加属性附加属性 可以在
48、某个子元素上指定其父元素的属性,以这种方式声明的属性称为附可以在某个子元素上指定其父元素的属性,以这种方式声明的属性称为附加属性。加属性。定义附加属性的一般形式为定义附加属性的一般形式为 : 父元素类型名父元素类型名.属性名属性名例如:例如: CheckBox Hello=TopHello Rectangle Width=100 Height=100 Fill=Blue Stroke=Red =20 StrokeThickness=3 / 457.6 事件事件 lWPF事件模型事件模型 事件是指由系统事先设定的、能被控件识别和响应的动作,如单击鼠标、事件是指由系统事先设定的、能被控件识别和响应
49、的动作,如单击鼠标、按下某个键等。按下某个键等。l在在XAML中注册事件中注册事件 在在XAML中,声明事件的一般形式为中,声明事件的一般形式为事件名事件名=事件处理程序名事件处理程序名 或者:或者:子元素类型名子元素类型名. .事件名事件名=事件处理程序名事件处理程序名 既可以通过事件列表附加事件。例如:既可以通过事件列表附加事件。例如:Button Name=Button1 =Button1_MouseDoubleClick_1/也可以在也可以在XAML中直接键入事件名称。中直接键入事件名称。 467.6 事件事件 l在在C#代码中注册事件代码中注册事件 利用利用+=注册事件,利用注册事件
50、,利用-=取消注册取消注册 ,例如:,例如:public MainWindow()public MainWindow() InitializeComponent(); InitializeComponent(); Button1.MouseDoubleClick += Button1_MouseDoubleClick; Button1.MouseDoubleClick += Button1_MouseDoubleClick; void Button1_MouseDoubleClick(object sender, void Button1_MouseDoubleClick(object sen
51、der, MouseButtonEventArgs e)MouseButtonEventArgs e) / /事件处理代码事件处理代码 477.6 事件事件 lWPF事件模型事件模型 事件处理程序中的参数事件处理程序中的参数 所有所有WPF事件处理程序默认都提供两个参数。例如:事件处理程序默认都提供两个参数。例如:private void OkButton_Click_1(object sender, private void OkButton_Click_1(object sender, RoutedEventArgsRoutedEventArgs e) e) 参数参数sender报告附加该
52、事件的对象,参数报告附加该事件的对象,参数e是数据源的相关数据。是数据源的相关数据。 在在WPF应用程序中,绝大部分情况下都是用应用程序中,绝大部分情况下都是用e.Source来判断事件源是谁来判断事件源是谁。另外,如果是判断图形图像中重叠的部分,则应该用。另外,如果是判断图形图像中重叠的部分,则应该用e.OriginalSource靠命中测试来判断。靠命中测试来判断。事件使用要点事件使用要点 (1)大部分情况下通过)大部分情况下通过【属性属性】窗口直接设置某元素的事件窗口直接设置某元素的事件 (2)如果具有相同类型的元素很多,而且这些元素都会引发某个相同的)如果具有相同类型的元素很多,而且这些元素都会引发某个相同的事件,此时可以在其父元素中声明附加事件,这种办法可以简化事件声明事件,此时可以在其父元素中声明附加事件,这种办法可以简化事件声明的次数。的次数。 487.6 事件事件 l事件路由策略事件路由策略 :WPF中的事件路由使用直接、冒泡和隧道三种方式。中的事件路由使用直接、冒泡和隧道三种方式。 直接路由直接路由直接(直接(Direct)是指该事件只针对元素自身,而不会再
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁夏中学宁县达标名校2025年中考生物试题仿真卷:生物试题试卷(6)含解析
- 辽宁理工学院《室内陈设设计》2023-2024学年第二学期期末试卷
- 厦门灌口中学2025年第二学期期中七校联考高三物理试题含解析
- 2025年中级经济师考试试题及答案参考
- 山东传媒职业学院《影视与文学作品创排》2023-2024学年第二学期期末试卷
- 2025年医学综合素质能力考试试卷及答案
- 山东旅游职业学院《市场营销学》2023-2024学年第二学期期末试卷
- 2025年影视创作与策划职业资格考试卷及答案
- 江苏省南京市玄武区重点达标名校2025届5月初三第三次联考物理试题试卷含解析
- 昆明医科大学海源学院《教育统计与SPSS应用》2023-2024学年第二学期期末试卷
- GB/T 15608-2006中国颜色体系
- GB/T 14315-2008电力电缆导体用压接型铜、铝接线端子和连接管
- 中考语文二轮专题复习:散文和小说阅读
- 《民法》全册精讲课件
- 【人卫九版内分泌科】第十一章-甲状腺功能减退症课件
- 护理人员业务技术档案 模板
- 工艺管道仪表流程图PID基础知识入门级培训课件
- 金融监管学-金融监管学课件
- 语文一年级上册:拼音9《y-w》ppt教学课件
- 标准溶液配制与标定原始记录(氢氧化钠)
- 内墙腻子施工技术交底
评论
0/150
提交评论