Как мне просто переместить прямоугольник Silverlight программным способом? Нет простого х / у для использования - PullRequest
1 голос
/ 09 декабря 2010

Как переместить прямоугольник Silverlight?

Я хочу сказать, что rect1.X ++ перемещает прямоугольник при активации события таймера ... Легко изменить высоту, как rect1.Height ++;

Есть ли какой-нибудь простой способ сделать это, не имея дело со сложными матрицами?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

Вам нужно использовать TranslateTransform для перемещения элемента:

<Rectangle Width="50" Height="50" HorizontalAlignment="Left" VerticalAlignment="Top" Fill="Red">
     <Rectangle.RenderTransform>
          <TranslateTransform x:Name="myTranslateTransform" />
     </Rectangle.RenderTransform>
</Rectangle>

Затем вы можете ссылаться на него в коде:

myTranslateTransform.X = 30;
myTranslateTransform.Y = 100;

Однако «правильный» способ (а также способ, которым вы можете делать другие вещи, такие как анимация перевода), состоит в том, чтобы установить значения для преобразования в VisualStateManager и использовать VisualStateManager.GoToState() вместо прямой манипуляции со значениями в коде как выше.

1 голос
/ 09 декабря 2010

Если это на холсте, установите значения Canvas.LeftProperty и Canvas.TopProperty. Вот отрывок из одного из моих проектов, перемещающий (прямоугольную) ногу:

        // at startup:
        _rightFoot = new Rectangle();
        _myCanvas.Children.Add(_rightFoot);

        // during animation cycle:
        _rightFoot.SetValue(Canvas.LeftProperty, _xRight - _footWidth/2);
        _rightFoot.SetValue(Canvas.TopProperty, _yRight - _footHeight/2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...