Как создать «парящие» кнопки в Silverlight? - PullRequest
2 голосов
/ 20 января 2010

Я видел другой эффект Silverlight, который мне очень понравился, и мне было интересно, как его воспроизвести. На главном экране приложения было 5 или 6 больших кнопок, которые плавно двигались вверх и вниз на несколько пикселей, как будто они зависали.

Может ли кто-нибудь дать мне немного XAML для достижения этого эффекта?

1 Ответ

4 голосов
/ 20 января 2010

С пустым пользовательским контролем и одной кнопкой, вызываемой кнопкой:

<UserControl.Resources>
    <Storyboard x:Name="sbHover" RepeatBehavior="Forever" AutoReverse="False">
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="button" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
            <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="00:00:00.4000000" Value="-4"/>
            <EasingDoubleKeyFrame KeyTime="00:00:00.8000000" Value="0"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>
<Button x:Name="button" Height="79" Margin="177,128,236,0" VerticalAlignment="Top" Content="Button" RenderTransformOrigin="0.5,0.5">
    <Button.RenderTransform>
        <TransformGroup>
            <ScaleTransform/>
            <SkewTransform/>
            <RotateTransform/>
            <TranslateTransform/>
        </TransformGroup>
    </Button.RenderTransform>
</Button>

Код позади:

public partial class MainPage : UserControl
{
    public MainPage()
    {
        // Required to initialize variables
        InitializeComponent();

        this.Loaded +=new System.Windows.RoutedEventHandler(MainPage_Loaded);
    }

    private void MainPage_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        sbHover.Begin();
    }
}

Вы можете настроить время и значения замедления, чтобы изменить скорость и расстояние, которое он качаетТакже вы можете добавить ослабление, чтобы получить более приятный эффект отскока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...