2012-01-30 7 views
8

Zasadniczo obecnie robię projekt ostatniego roku w mojej uczelni, gdzie dotykam na WPF powierzchni 2.0.Jak obrócić tekst w bloku tekstowym w C# (Code-Behind) ~~

Mój projekt to gra, w której jeśli użytkownik odpowie błędnie, następne pytanie zostanie obrócone, aby było trudniejsze. Ale nie jestem pewien, jak to zrobić. Widziałem przykład w msdn microsoft, ale pokazuje tylko kody XAML. Potrzebuję kodów C#.

Oto przykład XAML.

http://msdn.microsoft.com/en-us/library/ms754028.aspx

Ostatnim przykładem

Oto część moich kodów walidacji. Potrzebuję aktywować animację, jeśli odpowiedź użytkownika jest błędna.

if (surfaceRadioButton1.IsChecked == true) 

{ 

user_answer = (string)surfaceRadioButton1.Content; 

      textBlock2.Text = validateAnswer(user_answer, answer); 
      retreiveYellowQns(); 
      if (textBlock2.Text.Equals("Correct")) 
      { 
       yellow_coord = yellow_coord + 50; 
       Canvas.SetLeft(car, yellow_coord); 
       Canvas.SetTop(car, 289); 
      } 
      else 
      { 
       if (yellow_coord <= 330) 
       { 
        yellow_coord = 330; 
        Canvas.SetLeft(car, yellow_coord); 
        Canvas.SetTop(car, 289); 
       } 
       else 
       { 
        yellow_coord = yellow_coord - 50; 
        Canvas.SetLeft(car, yellow_coord); 
        Canvas.SetTop(car, 289); 
       } 
      } 
     } 

Każda pomoc będzie zadowolona, ​​z góry dziękuję.

+0

I zostały zaktualizowane odpowiedź. – Maheep

Odpowiedz

10

próbować ten jeden. Można używać animacji na RenderTransform:

var rotateAnimation = new DoubleAnimation(0, 180, TimeSpan.FromSeconds(5)); 
var rt = (RotateTransform) textblock2.RenderTransform; 
rt.BeginAnimation(RotateTransform.AngleProperty, rotateAnimation); 

W swojej XAML można dodać RotateTransform:

<TextBlock> 
    <TextBlock.RenderTransform> 
    <RotateTransform Angle="0"/> 
    </TextBlock.RenderTransform> 
</TextBlock> 
+0

Więc powinienem umieścić ten kod wewnątrz innego { yellow_coord = yellow_coord - 50; Canvas.SetLeft (samochód, yellow_coord); Canvas.SetTop (samochód, 289); –

+0

Tak, umieść ten kod w liniach, w których należy obrócić tekst (Sprawdzanie błędów -> przypadek błędu). Animacja tekstu zostanie obrócona o 180 stopni w ciągu 5 sekund. Da to użytkownikowi lepszą wizualną informację zwrotną, że jest obracany. – ElGaucho

+0

Dzięki, to działa. Jeszcze jedno ostatnie pytanie. Jak mogę wymusić zakończenie animacji, gdy użytkownik odpowie poprawnie na następne pytanie? –

6

Będziesz musiał użyć Transformacji do tego. Spróbuj odpowiedzieć https://stackoverflow.com/a/8815374/293712

lub można również spróbować, (nie próbowałem tego) Spójrz na this article więcej szczegółów

textBlock2.RenderTransform = new RotateTransform(IntegerAngleValue); 
+0

@Joon Kiat: Zobacz zaktualizowaną odpowiedź – Maheep

+0

Działa jak urok w WinFormach! Dziękuję, to rozwiązało mój problem. – Whiplash

1
  var rotateAnimation = new DoubleAnimation(180, 0, TimeSpan.FromMilliseconds(200)); 
      UiImage.RenderTransformOrigin = new Point(0.5,0.5); 
      UiImage.RenderTransform = new RotateTransform(); 
      var rt = (RotateTransform)UiImage.RenderTransform; 
      rt.BeginAnimation(RotateTransform.AngleProperty, rotateAnimation); 
Powiązane problemy