2014-09-04 10 views
5

Próbuję animować tekst na okrężnej ścieżce w aplikacji Windows Store (z C#) dla Win8.1. Chociaż istnieje kilka przykładów w Internecie na temat tego, jak to zrobić za pomocą Silverlight i WPF, te nie wydają się działać w ogóle w WinRT (brakuje na przykład wielu metod).Jak mogę animować tekst na ścieżce kołowej w winrt?

Szukając rozwiązania, znalazłem również pytanie Stackoverflow poniżej, ale dotyczy ono tylko systemu Windows 8.0, a nie Windows 8.1, więc nie mogłem go uruchomić.

how to create motion of text along Path animation in winrt application?

Czy istnieje rozwiązanie tego problemu bez konieczności ponownego wdrażania wszystko od zera?

+0

Myślałem [to] (http://studentguru.gr/b/kaisaras89/archive/2013/02/23/enabling-an-element-to-animate-on-a-path-on-windows-8 -store-apps-ie-making-a-pathlistbox-layoutpath-for-windows-rt) było całkiem zadbane, dostarczając alternatywę LayoutPath w RT, ale nie miałem okazji go użyć, a to tylko komentarz. –

+1

Dobra wskazówka, prawdopodobnie będę musiał zaimplementować jakieś rozwiązanie, aby litery "obracały się" po krzywych jeden po drugim, a nie cały blok TextBlock jako całość, ale nadal może to być dobry początek. Dzięki –

+0

Ya, jeśli wybierasz poszczególne litery, staje się o wiele łatwiejsze, po prostu ustaw elipsę jako przypomnienie, ustaw je i ustaw przekształcenia rotacji w storyboard, bez potu. LayoutPath z pewnością był przydatny w przeszłości. –

Odpowiedz

0

To nie działa? jest to wyłącznie rozwiązanie XAML. Storyboard zaczyna się od obciążenia.

<Window x:Class="WpfApplication3.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
      <Storyboard x:Key="Rotate"> 
       <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Label1"> 
         <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
         <EasingDoubleKeyFrame KeyTime="0:0:1" Value="360"/> 
       </DoubleAnimationUsingKeyFrames> 
      </Storyboard> 
    </Window.Resources> 
    <Window.Triggers> 
      <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
       <BeginStoryboard Storyboard="{StaticResource Rotate}"/> 
      </EventTrigger> 
    </Window.Triggers> 
<Grid> 
    <Label x:Name="Label1" Content="WordsAndStuff" HorizontalAlignment="Left" Margin="218.388,112.806,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.509,1.782"> 
      <Label.RenderTransform> 
       <TransformGroup> 
         <ScaleTransform/> 
         <SkewTransform/> 
         <RotateTransform/> 
         <TranslateTransform/> 
       </TransformGroup> 
      </Label.RenderTransform> 
    </Label> 

</Grid> 

+1

To jest zgrabne, ale jest to rozwiązanie WPF zamiast WinRT/XAML i działa na pojedynczej etykiecie zamiast na osobnych literach. –

1

Zapoznaj się kontrola CascadingTextBlock w WinRT XAML Toolkit dla przykładu jak zerwać jedną TextBlock do wielokrotności. Po prostu trzeba zmienić sposób animacji transformacji. Jeśli tekst jest ciągłym ciągiem - najlepiej jest po prostu utworzyć animację w Blend - ułóż wiele pojedynczych liter na okręgu i zaprojektuj animację za pomocą dostarczonych narzędzi.

+0

Nie jest to stały ciąg, ale twoja wskazówka CascadingTexBlock jest przydatna, przyjrzę się temu. –

Powiązane problemy