技术开发 频道

用Visual Studio2008玩转Silverlight(二)



六、进一步改进Silverlight
应用程序

    现在我们已经有了第一个正在运行的Silverlight应用程序,下面编辑它加入一些动画,以便我们能更深入地了解Silverlight。例如,让我们编辑这个按钮,以使它在更新时间的同时可以旋转。

    在上面的工程中,在Expression Blend2的在XAML文件中加一个Timeline控件。在加入Timerline后,我们的XAML代码如下:

<Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded"> <BeginStoryboard> <Storyboard x:Name="Timeline1"/> </BeginStoryboard> <BeginStoryboard> <Storyboard x:Name="Timeline2"/> </BeginStoryboard> </EventTrigger> </Canvas.Triggers>
在Page.xaml.vb文件中,声名一个private成员变量degrees,代码如下:

Partial Public Class Page
    Inherits Canvas
    Private degrees As Integer = 0
 在Page_Loaded()子程序中,为第二个Timerline加一个新了时间间隔:

Public Sub Page_Loaded(ByVal o As Object, ByVal e As EventArgs) ' Required to initialize variables InitializeComponent() ' 显示时间 Me.Timeline1.Duration = New Duration(New TimeSpan(0, 0, 1)) Me.Timeline1.Begin() ' 旋转按钮 Me.Timeline2.Duration = New Duration(New TimeSpan(100)) Me.Timeline2.Begin() End Sub
    从上面的代码可以看出,设置了Timeline2的间隔时间为100毫秒。也就是说,第0.1秒,Timeline2引发一次Completed事件,在这个Completed事件中,我们将调用PerformTransormation()子程序。Completed事件的代码如下:

Private Sub Timeline2_Completed( _ ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Timeline2.Completed PerformTransformation() Me.Timeline2.Begin() End Sub
这个子程序为了执行旋转动作,使用了RotateTransform对象。在这里,每旋转一次是一度。PerformTransformation方法的代码如下:

Private Sub PerformTransformation() ' 使用旋转对象 Dim rt As New RotateTransform ' 定义旋转信息 With rt .Angle = degrees .CenterX = 50 .CenterY = 50 End With ' 增加旋转的度数 degrees += 1 ' 旋转按钮 btnTime.RenderTransform = rt End Sub
 另外,当用户单击按钮时,按钮将重新回到它最初开始旋转的的位置:单击事件代码如下:

Private Sub btnTime_MouseLeftButtonDown( _ ByVal sender As Object, _ ByVal e As System.Windows.Input.MouseEventArgs) _ Handles btnTime.MouseLeftButtonDown degrees = 0 PerformTransformation() End Sub


16 旋转按钮
0
相关文章