none
鼠标触发事件 RRS feed

  • 问题

  • 在一个Windows窗体中插入了一用户控件,该用户控件可以呈现一动画,如果我想在窗体中分别用开始和停止按钮来触发这一动画,要怎样实现。还请高手不吝赐教,非常感谢。

    2010年7月20日 8:31

答案

  • 问题已经解决,绕了很大弯子,其实很简单,Button中一句代码就可以了。

    继续努力··

    • 已标记为答案 静xiah 2010年7月21日 7:58
    2010年7月21日 7:48

全部回复

  • 该动画如何实现?用的 gif 图片还是其他,如 avi 等?
    Mark Zhou
    2010年7月20日 8:45
  • 汗··上个标题写错了,应该是按钮按下时触发。发在没想用按钮触发之前,动画是通过控件的加载自动进行的··要是把按钮也写在控件里我是会的,可是放在Form中我就不会了。完全菜鸟,说不明白,给你贴我的代码吧。代码就是画个图,然后让其中一部分的填充色有变。

    <UserControl x:Class="RunPractive.RunPractice_Picture.BOF"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="350" Width="320">
       
        <StackPanel>
            <Canvas Width="300" Height="350">
                <Rectangle Canvas.Left="10" Canvas.Top="230" Width="20" Height="15"
                            Stroke="Black" StrokeThickness="1" Fill="LightGray"/>
                <Rectangle Canvas.Left="29" Canvas.Top="219" Width="12  " Height="40"
                           Stroke="Black" StrokeThickness="1" Fill="LightGray"/>
                <Rectangle Canvas.Left="40" Canvas.Top="80" Width="220" Height="250"
                             Stroke="Black" StrokeThickness="1" Fill="LightGray"  RadiusX="40" RadiusY="80"/>
                <Rectangle Name="luti" Canvas.Left="50" Canvas.Top="90" Width="200" Height="230"
                             Stroke="Black" StrokeThickness="1"  RadiusX="40" RadiusY="80">
                    <Rectangle.Fill>
                        <RadialGradientBrush>
                            <RadialGradientBrush.GradientStops>
                                <GradientStop Offset="0.0" Color="Yellow" />
                                <GradientStop Offset="1.0" Color="Red" />
                            </RadialGradientBrush.GradientStops>
                        </RadialGradientBrush>
                    </Rectangle.Fill>
                    <Rectangle.Triggers>
                        <EventTrigger RoutedEvent="Rectangle.Loaded">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimationUsingKeyFrames BeginTime="00:00:00"  Name="qw" Duration="00:00:06"
                                                        Storyboard.TargetName="luti"
                                                        Storyboard.TargetProperty="(Shape.Fill).(RadialGradientBrush.GradientStops)[1].(GradientStop.Color)" >
                                        <LinearColorKeyFrame Value="Red" KeyTime="00:00:01" />
                                        <LinearColorKeyFrame Value="OrangeRed" KeyTime="00:00:02" />
                                        <LinearColorKeyFrame Value="Orange" KeyTime="00:00:03"/>
                                        <LinearColorKeyFrame Value="OrangeRed" KeyTime="00:00:04" />
                                        <LinearColorKeyFrame Value="Red" KeyTime="00:00:05" />
                                    </ColorAnimationUsingKeyFrames>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Rectangle.Triggers>
                </Rectangle>
                <Rectangle Canvas.Left="140" Canvas.Top="30" Width="20" Height="170"
                            Stroke="Black" StrokeThickness="1" Fill="Yellow"  />
                <Rectangle Canvas.Left="259" Canvas.Top="219" Width="12  " Height="40"
                           Stroke="Black" StrokeThickness="1" Fill="LightGray"/>
                <Rectangle Canvas.Left="270" Canvas.Top="230" Width="20" Height="15"
                            Stroke="Black" StrokeThickness="1" Fill="LightGray"/>
               
               
            </Canvas>
           
           
        </StackPanel>
          
     
    </UserControl>

    2010年7月20日 9:03
  • 原来是 XAML。。。我能记得起来的一种方法是在 ApplicationResources 里面放一个那个控制动画 Button 的 Style,然后用个 Trigger,Property=Button.IsPressed,然后设置 Rectangle.Fill。

    刚刚看到您用了 Trigger,把这一段按照我的方法改改即可。用 Style。


    Mark Zhou

    2010年7月20日 9:12
  • 恩,谢谢您的指点,我朝这方向努力努力。

    2010年7月20日 9:18
  • 您好,昨天照着您说的的方法做了来着,可惜还是没能做出效果来,能不能麻烦您再教的具体些?那个ApplicationResource要用在哪?没找到相应的资料,麻烦您说明下,谢谢

    2010年7月21日 0:42
  • 问题已经解决,绕了很大弯子,其实很简单,Button中一句代码就可以了。

    继续努力··

    • 已标记为答案 静xiah 2010年7月21日 7:58
    2010年7月21日 7:48
  • 昨天我也试了一下,用 Style 可以实现了,不过有点麻烦。

    用 Button 的话,给它加一个 Click 的 EventTrigger,然后在其中 BeginStoryBoard,加一个 StoryBoard,把 StoryBoard.TargetName 设置成需要做动画的 Rectangle 的 Name 即可。


    Mark Zhou
    2010年7月21日 8:49