2012-01-30 29 views
8

Về cơ bản tôi hiện đang thực hiện dự án năm cuối ở trường đại học của tôi nhờ đó tôi đang chạm vào bề mặt 2.0 WPF.Làm thế nào để bạn xoay văn bản trong textblock trong C# (Code-Behind) ~~

Dự án của tôi là một trò chơi mà theo đó nếu người dùng trả lời một câu hỏi sai, câu hỏi tiếp theo sẽ được xoay vòng để làm cho nó khó khăn hơn. Nhưng tôi không chắc chắn làm thế nào để làm điều đó. Tôi thấy một ví dụ trong msdn microsoft nhưng nó chỉ hiển thị các mã XAML. Tôi cần mã C#.

Dưới đây là ví dụ XAML.

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

Ví dụ cuối cùng

Dưới đây là phần mã xác nhận tôi. Tôi cần kích hoạt hoạt ảnh nếu người dùng trả lời sai.

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

Mọi trợ giúp đều rất vui, cảm ơn trước.

+0

Tôi đã cập nhật câu trả lời. – Maheep

Trả lời

10

thử thế này. Bạn có thể sử dụng một hình ảnh động trên RenderTransform:

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

Trong XAML của bạn, bạn có thể thêm RotateTransform:

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

Vì vậy, tôi nên đặt mã đó bên trong số khác { yellow_coord = yellow_coord - 50; Canvas.SetLeft (ô tô, yellow_coord); Canvas.SetTop (ô tô, 289); –

+0

Có, đặt mã này vào các dòng mà văn bản của bạn sẽ được xoay (Lỗi xác nhận -> trường hợp lỗi) .Điều này sẽ tạo hiệu ứng văn bản của bạn được xoay 180 độ trong vòng 5 Giây. Điều này sẽ cung cấp cho người dùng một phản hồi trực quan tốt hơn rằng nó được xoay vòng. – ElGaucho

+0

Cảm ơn, nó hoạt động. Chỉ một câu hỏi cuối cùng. Làm cách nào để chấm dứt hiệu ứng hoạt ảnh khi người dùng trả lời đúng câu hỏi tiếp theo? –

6

Bạn sẽ phải sử dụng Chuyển đổi cho điều này. Hãy thử câu trả lời này https://stackoverflow.com/a/8815374/293712

Hoặc Bạn cũng có thể thử, (Tôi đã không cố gắng này) Nhìn vào this article để biết thêm chi tiết

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

@Joon Kiat: Xem câu trả lời cập nhật – Maheep

+0

Hoạt động như một sự quyến rũ trong Winforms! Cảm ơn bạn, điều này đã giải quyết được vấn đề của tôi. – 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);