Windows Phone 7 UIElement манипуляции - PullRequest
0 голосов
/ 13 февраля 2012

Я хочу выполнить следующий сценарий. У меня есть UIElement с CompositeTransform, который я хочу перетащить по экрану. Плюс, когда я нажимаю на него, я хочу, чтобы он повернулся на 90 градусов. Так, Я справляюсь Нажмите ManipulationStarted ManipulationDelta -> там я увеличиваю Translate.X и Y на e.DeltaManipulation.Translation.X и Y ManipulationCompleted

Когда CompositeTransform.Rotation равен 0, все работает нормально. Однако, когда оно> 0 (например, 90), e.DeltaManipulation.Translation дает мне значения, относящиеся к вращению объекта! Итак, я пытаюсь переместить элемент UIE в правой части экрана, но он перемещается вверх ...

Любые намеки?

1 Ответ

0 голосов
/ 24 января 2013

У меня есть значения положения (сверху и слева), привязанные к холсту, и значение поворота, привязанное к углу преобразования поворота Во время моего события ManipulationDelta я использую эти две строки:

piece.Left = piece.Left + (Math.Cos(piece.Radians)*e.DeltaManipulation.Translation.X) - (Math.Sin(piece.Radians) * e.DeltaManipulation.Translation.Y);
piece.Top = piece.Top + (Math.Cos(piece.Radians) * e.DeltaManipulation.Translation.Y) + (Math.Sin(piece.Radians) * e.DeltaManipulation.Translation.X);

Я должен упомянуть, что я поворачиваюсь только на 90 градусов за раз. Я думаю, что это не сработает, если у вас есть произвольные углы. Но функции синуса и косинуса приведут вас к небольшому редактированию, если вы делаете произвольные углы.

Плюс, вы сказали, что хотите подсказку ...

...