WPF C# XAML ismouseover анимация

В моем проекте, когда программа запускается, многоугольник движется по заданному пути. Что я должен изменить, чтобы остановить перемещение многоугольника, когда курсор мыши на нем (когда курсор мыши находится вне многоугольника, многоугольник должен продолжать свое движение)

<Window x:Class="aqua3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:aqua3"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <PathGeometry x:Key="pathg">
        <PathFigure IsClosed="True">
            <PolyLineSegment Points="0,0 200,0 200,80 0,80" />
        </PathFigure>
    </PathGeometry>
</Window.Resources>
<Grid Background="LightBlue">
    <Canvas Margin="10" Background="LightBlue">
        <Path Stroke="Red" Data="{StaticResource pathg}" Canvas.Top="10" Canvas.Left="10" />
        <Polygon Name="polygon1" Stroke="Yellow" Fill="Yellow"  Points="100,150 120,140 120,120 165,150 120,180 120,160 ">
            <Polygon.Triggers>
                <EventTrigger RoutedEvent="Window.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimationUsingPath Storyboard.TargetProperty="(Canvas.Top)"
                                   Duration="0:0:15" RepeatBehavior="Forever"
                                   PathGeometry="{StaticResource pathg}" Source="Y" >
                            </DoubleAnimationUsingPath>
                            <DoubleAnimationUsingPath Storyboard.TargetProperty="(Canvas.Left)"
                                   Duration="0:0:15" RepeatBehavior="Forever"
                                   PathGeometry="{StaticResource pathg}" Source="X" >
                            </DoubleAnimationUsingPath>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Polygon.Triggers>
        </Polygon>
    </Canvas>
</Grid>

1 ответ

  1. Присвойте имя вашему BeginStoryboard

    <BeginStoryboard x:Name="Move">
    
  2. Чтобы сделать паузу, добавьте это

    <EventTrigger RoutedEvent="MouseEnter">
         <PauseStoryboard BeginStoryboardName="Move"/>
    </EventTrigger>
    
  3. Чтобы возобновить, добавьте это

    <EventTrigger RoutedEvent="MouseLeave">
         <ResumeStoryboard BeginStoryboardName="Move"/>
    </EventTrigger>
    
Другие вопросы по тегам