2010-01-19 55 views
2

我看到Silverlight效果,另一个我很喜欢,我想知道如何重现它。该应用程序的主屏幕上有5或6个大按钮,轻轻地上下移动几个像素,就好像它们在徘徊。如何在Silverlight中创建“悬停”按钮?

有人可以提供一些XAML来达到这种效果吗?

+0

你有链接到应用程序,所以我们确切地知道你在说什么? – 2010-01-19 23:14:53

+0

一个链接将是伟大的。 – bendewey 2010-01-20 03:07:55

+0

它实际上是一个WPF应用程序,但我认为Silverlight可以做同样的事情。它被称为“Silicon Studio软件演示”,你应该可以通过谷歌找到它(目前在受限制的互联网访问,对不起!) – 2010-01-20 03:20:08

回答

4

一个空白的用户控件和一个按钮叫按钮:

<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(); 
    } 
} 

你可以调整的缓解时间和价值观改变的速度和距离鲍勃的,同样你可以添加一个缓动来获得更好的反弹效果。

+0

完美TreeUK - 正是我以后。非常感谢。 – 2010-01-19 23:38:59