C# 动画控制旋转
我定义了一个简单的控件,就是一个红色的正方形,里面有一个黑色的三角形。当用户单击控件时,我想将黑色三角形旋转180度。我需要设置旋转的动画。下面是控件(和主窗口)的xaml-C# 动画控制旋转,c#,wpf,expression-blend,C#,Wpf,Expression Blend,我定义了一个简单的控件,就是一个红色的正方形,里面有一个黑色的三角形。当用户单击控件时,我想将黑色三角形旋转180度。我需要设置旋转的动画。下面是控件(和主窗口)的xaml- 我尝试在按下控件时在控件上设置一个触发器进行旋转,但似乎没有IsPressed属性(但出于某种原因,存在IsMouseOver属性)。那么,当IsPressed属性不可用时,我如何触发旋转呢 如何使这成为动画旋转 我建议您通过Microsoft Expression Blend 3或4版创建动画;在这种情况下(即动画
我建议您通过Microsoft Expression Blend 3或4版创建动画;在这种情况下(即动画),用xaml编写代码非常困难
祝你好运。我建议你通过Microsoft Expression Blend 3或4版创建动画;在这种情况下(即动画),用xaml编写代码非常困难
祝你好运。你可以使用
EventTrigger
并收听MouseLeftButtonDown
事件
对于旋转,要旋转的路径需要如下所示:
<Path ...>
<Path.RenderTransform>
<RotateTransform />
</Path.RenderTransform>
</Path>
动画本身如下所示(持续时间为半秒):
但是,正如Hothreeyn已经指出的那样,使用Blend显然更容易。您可以使用
EventTrigger
并收听MouseLeftButtonDown
事件
对于旋转,要旋转的路径需要如下所示:
<Path ...>
<Path.RenderTransform>
<RotateTransform />
</Path.RenderTransform>
</Path>
动画本身如下所示(持续时间为半秒):
但是,正如Hothreeyn已经指出的那样,使用Blend显然更简单。您需要在路径中添加一个MouseDown事件,一个将启动故事板的事件触发事件。我为您采样并在Expression Blend中创建了请求的旋转。若要更改,可以在情节提要“OnMouseDown1”中更改旋转度
您需要将MouseDown事件添加到路径中,这是一个事件触发事件,将启动故事板。我为您采样并在Expression Blend中创建了请求的旋转。若要更改,可以在情节提要“OnMouseDown1”中更改旋转度
iPressed属性适用于需要在网格或边框上使用OnMouseLeftDown/Up的更高控件(按钮)。你可以在Expression blend中制作动画,我想说的是,试着找一本关于WPF和动画的书,然后你会很快学会。iPressed属性适用于更高的控件(按钮),你需要使用OnMouseLeftDown/Up作为网格或边框。你可以在Expression blend中制作动画,我会说,试着找一本关于WPF和动画的书,然后你会很快学会它。
<DoubleAnimation BeginTime="0"
Duration="0:0:0.5"
To="180"
Storyboard.TargetName="nameOfThePath"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" />
<Window.Resources>
<ControlTemplate x:Key="ControlControlTemplate1" TargetType="{x:Type Control}">
<ControlTemplate.Resources>
<Storyboard x:Key="OnMouseDown1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="myPath">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="180"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<Grid>
<Border Background="Red"/>
<Path Grid.Row="1" x:Name="myPath" Visibility="Visible" Data="M0,0 L1,0 0.5,1 z" Stretch="Fill"
Width="80" Height="60" Fill="Black" Opacity="1"
VerticalAlignment="Center" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.4">
<Path.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Path.RenderTransform>
</Path>
</Grid>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseDown" SourceName="myPath">
<BeginStoryboard Storyboard="{StaticResource OnMouseDown1}"/>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Storyboard x:Key="OnMouseDown1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="control">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="180"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Control x:Name="control" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Template="{DynamicResource ControlControlTemplate1}" RenderTransformOrigin="0.5,0.5">
<Control.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Control.RenderTransform>
</Control>
</Grid>