Как нарисовать круг и переместить его как анимацию в C # WPF - PullRequest
0 голосов
/ 19 февраля 2012

Я хотел бы нарисовать простой круг и переместить его в определенную позицию по оси X, Y путем кодирования.

Например;

В окне WPF будет 2 кнопки и круг 0,0 (x, y).Когда я нажму 1-ю кнопку, она перейдет к X = 150 и Y = 40. Но форма должна идти плавно.Я имею в виду, я не хочу, чтобы он исчезал в текущей позиции и появлялся в определенной позиции.Я хочу, чтобы это пошло туда.Как мне это сделать?Можете ли вы объяснить мне шаги?и, если возможно, какой-нибудь пример кода?

ОБНОВЛЕННЫЙ КОД:

    int X = 0;
    int Y = 0;

    public bool inside = true;

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {

        if (inside)
        {
            DoubleAnimation animatex = new DoubleAnimation();
            animatex.To = X++;
            // animatex.Duration = new Duration(TimeSpan.FromSeconds(1));
            // animatex.RepeatBehavior = RepeatBehavior.Forever;
            el.BeginAnimation(Canvas.LeftProperty, animatex);

            DoubleAnimation animatey = new DoubleAnimation();
            animatey.To = Y++;
            // animatey.RepeatBehavior = RepeatBehavior.Forever;
            el.BeginAnimation(Canvas.TopProperty, animatey);
        }
    }

Ответы [ 2 ]

0 голосов
/ 19 февраля 2012

Или только в XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition />
    </Grid.RowDefinitions>
    <StackPanel>
        <Button Content="Move it">
            <Button.Triggers>
                <EventTrigger RoutedEvent="Button.Click" >
                    <BeginStoryboard>
                        <Storyboard Storyboard.TargetName="theEllipse" Duration="00:00:05">
                            <DoubleAnimation From="-5" To="145" Storyboard.TargetProperty="(Canvas.Left)"/>
                            <DoubleAnimation From="-5" To="35" Storyboard.TargetProperty="(Canvas.Top)"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Button.Triggers>
        </Button>
    </StackPanel>
    <Border Margin="10" Grid.Row="1">
        <Canvas>
            <Ellipse x:Name="theEllipse" Width="10" Height="10" Fill="BlueViolet" Canvas.Left="-5" Canvas.Top="-5" />
        </Canvas>
    </Border>
</Grid>

Поиск информации об использовании раскадровки здесь или в другом месте.

0 голосов
/ 19 февраля 2012

xaml это что-то вроде <Canvas> <Ellipse Width="10" Height="10" Canvas.Left="0" Canvas.Top="0" Fill="Black" x:Name="el"/> </Canvas> Событие нажатия кнопки выглядит примерно так

enter image description here

Надеюсь, это сработает. Я попробовал, и это сработало.

...