Двойное умножение, дающее NaN - PullRequest
2 голосов
/ 03 августа 2011

Я пытаюсь использовать манипуляции для изменения масштаба холста. При отладке приведенного ниже кода кажется, что оба canImage.Width и canImage.Heigh устанавливаются на NaN. Я не понимаю, как удвоить удвоение может дать Nan

(ширина ~ 400 Высота ~ 400 e.scale.y ~ -1,5 e.Scale.X ~ 0.3)

.

    private void viewer_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
    {
        if (e.TotalManipulation.Scale.X != 0 && e.TotalManipulation.Scale.Y != 0) {
            canImage.Width = mainImage.Width * (double)e.TotalManipulation.Scale.X;
            canImage.Height = mainImage.Height * (double)e.TotalManipulation.Scale.Y;
        }
    }

РЕДАКТИРОВАТЬ: Просто введите условную точку останова, и кажется, e.TotalManipulation.Scale.X и e.TotalManipulation.Scale.X никогда не NaN. Установка условия e.TotalManipulation.Scale.X > 0 действительно остановила проблему. Похоже, что установка высоты / ширины на что-то меньшее, чем просто заставляет их становиться NaN, а не просто падает. Спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Предполагается, что это отрицательный знак для e.scale.y = -1,5?Установка высоты в отрицательное число может объяснить ваши проблемы.

1 голос
/ 03 августа 2011

Если e.TotalManipulation.Scale.X или e.TotalManipulation.Scale.Y равны NaN, то произведение будет равно NaN. Попробуйте протестировать, используя вместо этого следующее (поскольку вам также не нужны отрицательные числа):

if (e.TotalManipulation.Scale.X > 0 && e.TotalManipulation.Scale.Y > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...