Как плавно повернуть uwp usercontrol?

Вы можете и не должны предполагать, что $_SERVER['HTTP_REFERER'] будет присутствовать.

Если вы управляете предыдущей страницей, вы можете передать URL как параметр "http://site.com/page2.php?prevUrl=".urlencode("http://site.com/page1.php"). Если вы не контролируете страницу, то вы ничего не можете сделать.

1
задан Mg Bhadurudeen 11 March 2019 в 14:29
поделиться

1 ответ

Ваш вопрос сбивает с толку ... вы хотите повернуть 2D-объект в плоскости экрана, верно? (Это то, что я предположил из вашей трансформации.) Так почему вы используете обе позиции мыши x и y? Ваше вращение является скалярным значением, поэтому вы должны просто использовать одну ось движения мыши.

Если вы вместо этого хотите повернуть свой объект, удерживая мышкой воображаемое кольцо вокруг объекта и поворачивая его ... тогда вам следует вместо этого сохранять ссылку на начальную позицию относительно центра объекта или начальный угол мыши относительно центра объекта. Может быть, что-то вроде этого:

private void Manipulator_OnManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
    if (e.Position.X > ContainerGrid.Width - RotateRectangle.Width && 
    e.Position.Y < ContainerGrid.Height - RotateRectangle.Height)
    {
    _isRotating = true;
    var startingRadians = Math.Atan2((currentLocation.Y - objectCenter.Y),     (currentLocation.X - objectCenter.X));
    startingAngle = startingRadians * 180 / Math.PI;
    return;
    }

    _isRotating = false;
}

private void Manipulator_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{ 
    if (_isRotating)
    {
    Point currentLocation = e.Position;
    double radians = Math.Atan2((currentLocation.Y - objectCenter.Y),     (currentLocation.X - objectCenter.X));
    var angle = radians * 180 / Math.PI;
    RotateGrid.Angle = angle-startingAngle;
    }
}
0
ответ дан Lee McPherson 11 March 2019 в 14:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: