如何在C#(Code-Behind)中旋转文本块中的文本~~

时间:2012-01-30 07:00:03

标签: wpf animation textblock pixelsense

基本上我目前在我的大学做最后一年的项目,我接触表面2.0 WPF。

我的项目是一个游戏,如果用户错误地回答问题,下一个问题将被轮换以使其更加困难。但我不确定该怎么做。我在msdn microsoft中看到了一个例子,但它只显示了XAML代码。我需要C#代码。

以下是XAML示例。

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

最后一个例子

这是我验证码的一部分。如果用户回答错误,我需要激活动画。

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

任何帮助都会很高兴,提前谢谢。

3 个答案:

答案 0 :(得分:10)

试试这个。您可以在RenderTransform上使用动画:

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

在您的Xaml中,您可以添加RotateTransform:

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

答案 1 :(得分:6)

您必须为此使用转换。试试这个答案https://stackoverflow.com/a/8815374/293712

或者您也可以尝试,(我还没试过)查看this article了解更多详情

textBlock2.RenderTransform = new RotateTransform(IntegerAngleValue); 

答案 2 :(得分:2)

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