19.3 WPF应用程序开发

  WPF不仅提供了强大的布局功能和窗体渲染功能,在WPF应用程序开发中,还能够实现如Flash一样的动画效果,这就使得在Windows窗体中能够实现Flash动画效果,Microsoft Expression Blend 2提供了动画轴,动画事件处理面板,方便了开发人员在WPF中实现动画效果。

19.3.1 WPF动画事件
  WPF可以像Flash一样支持动画开发,与普通的事件不同的是,WPF包括一个动画事件,这个动画事件描述的是当用户执行某个操作时所触发的动画事件。首先需要创建一个动画对象,这个对象可以是一个图片,也可以是一个控件,其XAML文档如下所示。
+展开
-XML
<Button HorizontalAlignment="LeftMargin="267,103,0,0VerticalAlignment="Top
Content="会变的按钮Height="52.687Width="86Opacity="0.4"/>

  上述代码创建了一个按钮控件,并为按钮控件配置了相应的属性,这些属性包括对齐方式,大小,文本,以及不透明度。如果开发人员希望当用户的鼠标单击该控件时,该控件的宽度和高度都会变化,并且不透明度也会变化,在Microsoft Expression Blend 2中的交互控制面板可以完成该事件的配置,如图19-13所示。
交互面板
图19-13 交互面板
单击【+事件】按钮可以为WPF应用程序添加动画事件,Microsoft Expression Blend 2能够智能的识别WPF应用中的控件并为相应的控件选择方法,为了实现开发人员所希望实现的效果。在下拉菜单中,这里可以选择【Click】事件如图19-14所示。
选择事件
图19-14 选择事件
  选择事件后单击【时】按钮旁边的加号能够为动画事件添加新操作,如果WPF应用程序没有创建时间轴时,系统会提示是否添加一个时间轴,单击【确定】按钮即可创建一个默认的时间轴以供开发人员进行动画开发,如图19-15所示。
添加时间轴
图19-15 添加时间轴
  注意:Story board可以翻译成节目播出表,其概念同时间轴基本相同,都会规定对象的播放顺序和方法。

19.3.2 WPF时间轴
  在Flash动画的制作中,有一个时间轴的概念。时间轴是用来控制在动画运行中相应的时间时,某个或某些对象所需要执行的操作。例如一个Flash动画,在动画运行后,第5秒的时候有一个小人出现在动画中,并且拿出了一朵花。在这个过程中,就需要在第5秒的时候对相应的对象(这里包括人,花)进行相应的操作。
  在WPF应用程序中同样包括一个时间轴,这个时间轴用于定制WPF动画事件中某一个时刻所需要实现的动画效果,开发人员能够通过使用WPF时间轴快速的实现动画效果。例如上一节中讲到的开发人员希望实现一个按钮的动画效果,则可以通过时间轴编写相应的事件,时间轴如图19-16所示。
  在对象和时间轴面板中,可以选择相应的对象进行动画事件的操作。在时间轴面板中,可以看到在时间轴上方包括从0开始的数字,这些数字就是时间控制。当触发某个动画事件时,时间轴就开始运算,从0开始向右移动,分别执行相应的路径以实现动画效果。如果开发人员希望用户单击按钮时能够实现按钮形状和透明度的变化,可以通过时间轴方便的生成动画。在进行时间轴操作前,可以通过样式控制控件的相应位置,样式和内容等,如图19-17所示。
对象和时间轴
图19-16 对象和时间轴
控件初始状态
图19-17 控件初始状态
  初始状态确定后XAML文档代码如下所示。
+展开
-XML
<Button HorizontalAlignment="LeftMargin="267,103,0,0VerticalAlignment="TopContent="会变的按钮Height="52.687Width="86Opacity="0.4x:Name="buttonRenderTransformOrigin="0.5,0.5">
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1ScaleY="1"/>
<SkewTransform AngleX="0AngleY="0"/>
<RotateTransform Angle="0"/>
<TranslateTransform X="0Y="0"/>
</TransformGroup>
</Button.RenderTransform>
</Button>

  上述代码初始化了一个按钮控件并声明。在确定了初始状态后就需要拖动时间轴来确定动画播放的顺序,如图19-18所示。
拖动时间轴
图19-18 拖动时间轴
  如图19-18所示,可以将时间轴拖放在2秒的位置。拖放后,可以直接在当前位置修改控件的属性。修改后当触发动画事件后,时间轴开始移动并且会随着时间轴进行控件属性的更改。当时间轴的时间指针移动到2秒位置时,属性就会更改成2秒时设置的样式,如图19-19和图19-20所示。
初始状态
图19-19 初始状态
实现动画
图19-20 实现动画
  通过使用时间轴能够快速定义WPF动画效果,开发人员能够使用时间轴进行相应的动画操作而无需通过编程实现,这样就简化了开发人员对底层动画实现的复杂的操作,节约了开发周期。另外,设计人员也能够设计动画事件并专注与WPF动画的实现,而开发人员能够专注逻辑处理,可以将动画事件的实现交付给设计人员,形成明确的分工。

19.3.3 WPF事件处理
  在Microsoft Expression Blend 2中只能控制WPF应用程序的样式,却无法进行事件处理开发,若需要进行WPF应用程序开发,就必须使用Visual Studio 2008。使用Visual Studio 2008打开Microsoft Expression Blend 2创建的解决方案,能够进行WPF应用程序事件开发,如图19-21所示。
使用Visual Studio 2008打开解决方案
图19-21 使用Visual Studio 2008打开解决方案
  在Visual Studio 2008中进行WPF应用程序开发会呈现两个窗口,一个窗口用于直接进行Windows窗体布局,另一个窗口用于呈现相应的XAML文档。在Visual Studio 2008中,可以直接修改XAML文档进行WPF样式控制,示例代码如下所示。
+展开
-XML
<Grid x:Name="LayoutRoot">
<Button Margin="155,86,169,107Content="更改后的按钮Opacity="0.6
x:Name="buttonRenderTransformOrigin="0.5,0.5">

<Button.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1ScaleY="1"/>
<SkewTransform AngleX="0AngleY="0"/>
<RotateTransform Angle="0"/>
<TranslateTransform X="0Y="0"/>
</TransformGroup>
</Button.RenderTransform>
</Button>
</Grid>

  上述代码直接修改XAML代码就可以实现Windows窗体样式的控制。与Microsoft Expression Blend 2不同的是,在Visual Studio 2008中双击按钮控件,在就会在cs文件中自动创建相应的事件代码,开发人员可以在相应的区域中编写代码,示例代码如下所示。
+展开
-C#
        private void button_Click(object sender, RoutedEventArgs e)
        {
            button.Content = "按钮控件被按";//触发事件
        }

上述代码运行后如图19-22和图19-23所示。
按钮初始化
图19-22 按钮初始化
动画事件和按钮事件
图9-23 动画事件和按钮事件
  注意:WPF应用程序中的一些属性可能和Win From和ASP.NET中的一些属性不同,例如在Win From和ASP.NET中按钮控件上的文本是通过Text属性控制的,而在WPF中使用的是Content属性。
WPF应用的开发和Win Form应用程序的开发没有特殊的区别,但是WPF应用提供了更好的用户体验。WPF不仅能够提供动画事件同样也能够执行Win From应用程序开发中所需要的事件。

加支付宝好友偷能量挖...


评论(0)网络
阅读(98)喜欢(0)Asp.Net/C#/WCF