如何在C#中使用CompositeTransform?

时间:2014-09-30 08:49:14

标签: c# xaml rendertransform

如何在C#中编写此XAML代码?

<TextBlock Text="..." RenderTransformOrigin="0.5,0.5">
                    <TextBlock.RenderTransform>
                        <CompositeTransform TranslateY="-25"/>
                    </TextBlock.RenderTransform>
                </TextBlock>

我试过这样的方式:

private TextBlock dots;
dots = new TextBlock();
dots.Text = "...";
dots.RenderTransformOrigin = new Point(0.5, 0.5); 
(dots.RenderTransform as CompositeTransform).TranslateY = 20;

但是我得到了一个 System.NullReferenceException 。 我也试过这种方式:

var ct = (CompositeTransform)dots.RenderTransform;
            ct.TranslateY = 20;

但是我得到一个 System.InvalidCastException(无法将'System.Windows.Media.MatrixTransform'类型的对象强制转换为'System.Windows.Media.CompositeTransform'。)

提前致谢!

1 个答案:

答案 0 :(得分:3)

如果您从头开始创建新控件,它的RenderTransform属性将是身份 MatrixTransform,因此您可以&#39;把它投到CompositeTransform。你必须这样做:

dots.RenderTransform = new CompositeTransform { TranslateY = 20 };