2010-01-19 10 views
2

J'ai vu un effet Silverlight l'autre que j'ai beaucoup aimé, et je me demandais comment le reproduire. L'écran principal de l'application avait 5 ou 6 gros boutons qui se déplaçaient doucement de quelques pixels, comme s'ils étaient en train de planer.Comment créer des boutons "planant" dans Silverlight?

Est-ce que quelqu'un pourrait me fournir du XAML pour réaliser cet effet?

+0

Avez-vous un lien vers l'application afin que nous sachions exactement de quoi vous parlez? –

+0

Un lien serait génial. – bendewey

+0

C'était en fait pour une application WPF, mais j'ai supposé que Silverlight pouvait faire la même chose. Il s'appelait "Silicon Studio Software Demo", et vous devriez pouvoir le trouver avec google (actuellement sur un accès internet restreint, désolé!) –

Répondre

4

Avec un usercontrol vide et un bouton bouton appelé:

<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> 

code derrière:

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

Vous pouvez modifier les temps d'assouplissement et les valeurs pour changer la vitesse et la distance qu'il bobs par, également vous pourriez ajouter une accélération pour obtenir un meilleur effet de rebond.

+0

Perfect TreeUK - exactement ce que je recherchais. Merci beaucoup. –

Questions connexes