WP7: не удается получить значение Canvas.RenderTransform - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть около 3-4 элементов управления холстом, и каждый содержит около 750-1200 путей.Пользователям нужно сделать какое-то преобразование для них, и я использую для этого глобальный

    Canvas SelectedCanvas;

Первоначально (в конструкторе) SelectedCanvas принимает значение одного из моих элементов управления Canvas.кнопка, которая вращает холст Я использую следующую функцию:

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

Я также пытался эта ссылка и эта ссылка , но мне также нужно получить значениеRenderTransform.Я делаю что-то неправильно?Заранее спасибо!

1 Ответ

1 голос
/ 07 февраля 2012

Значение по умолчанию для свойства RenderTransform равно Transform.Identity . Вы должны применить Transform, например 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; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...