2012-01-30 12 views
8

Fondamentalmente sto attualmente facendo un progetto per l'anno scorso nel mio college in cui mi sto toccando sulla superficie 2.0 WPF.Come si fa a ruotare il testo nel blocco testo in C# (Code-Behind) ~~

Il mio progetto è un gioco in cui se un utente risponde in modo errato a una domanda, la domanda successiva verrà ruotata per renderla più difficile. Ma non sono sicuro di come farlo. Ho visto un esempio in msdn microsoft ma mostra solo i codici XAML. Ho bisogno dei codici C#.

Ecco l'esempio XAML.

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

L'ultimo esempio

Ecco parte dei miei codici di convalida. Devo attivare l'animazione se l'utente risponde erroneamente.

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

qualsiasi aiuto sarà contento, grazie in anticipo.

+0

Ho aggiornato la risposta. – Maheep

risposta

10

provare questo. È possibile utilizzare un'animazione sul RenderTransform:

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

Nel vostro XAML, è possibile aggiungere il RotateTransform:

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

Quindi dovrei inserire il codice all'interno dell'altro { yellow_coord = yellow_coord - 50; Canvas.SetLeft (car, yellow_coord); Canvas.SetTop (auto, 289); –

+0

Sì, metti questo codice sulle linee dove ruotare il testo (Convalida errore -> caso errore). Questo animerà il testo da ruotare di 180 gradi entro 5 secondi. Ciò fornirà all'utente un feedback visivo migliore che viene ruotato. – ElGaucho

+0

Grazie, funziona. Solo un'ultima domanda Come faccio a terminare forzatamente l'animazione una volta che l'utente ha risposto correttamente alla domanda successiva? –

6

Per questo motivo sarà necessario utilizzare Trasformazione. Prova questa risposta https://stackoverflow.com/a/8815374/293712

Oppure può anche provare, (non ho provato questo) Guarda this article per maggiori dettagli

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

@ Joon Kiat: Vedi risposta aggiornata – Maheep

+0

Funziona come un fascino in Winforms! Grazie, questo ha risolto il mio problema. – 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); 
Problemi correlati