WP7:无法获取Canvas.RenderTransform值

时间:2012-02-06 20:08:24

标签: c# wpf vb.net windows-phone-7 xaml

我有大约3-4个画布控件,每个控件包含大约750-1200个路径。 用户需要对它们进行一些转换,我将其用于全局

    Canvas SelectedCanvas;

最初(在构造函数中)SelectedCanvas获取我的画布控件的值。

    SelectedCanvas = canvas1;

对于旋转画布的按钮,我使用下一个函数:

    private void RotateRightLayerButton_Click(object sender, RoutedEventArgs e)
    {
        if (SelectedCanvas.RenderTransform != null)
        {
            //method 1
            CompositeTransform ct = canvas1.RenderTransform as CompositeTransform;
            if (ct.Rotation == 360)//ct will return NullException
                ct.Rotation = 0;
            ct.Rotation += 30;

            // method 2
            TransformGroup tg = canvas1.RenderTransform as TransformGroup;                
            (tg.Children[0] as RotateTransform).Angle += 30;
            //tg will return NullException                               
        }
    }

我也试过this linkthis link 但我还需要获得RenderTransform的值。 难道我做错了什么?提前谢谢!

1 个答案:

答案 0 :(得分:1)

RenderTransform属性的默认值为Transform.Identity。您必须应用转换,例如一个RotateTransform,在你可以操作它之前到你的画布。

如果您使用RotateTransform,您的代码必须如下所示:

RotateTransform t = bd1.RenderTransform as RotateTransform; 
if (t.Angle >= 360) 
    t.Angle = 0; 
t.Angle += 30; 

或:

RotateTransform t = bd1.RenderTransform as RotateTransform; 
t.Angle = (t.Angle + 30) % 360;