双倍乘法给出NaN

时间:2011-08-02 21:22:59

标签: c# windows-phone-7

我正在尝试使用操作来重新缩放画布。在调试下面的代码时,似乎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.Xe.TotalManipulation.Scale.X永远不会NaN。放e.TotalManipulation.Scale.X > 0条件确实阻止了这个问题。看起来将高度/宽度设置为小于1的东西只会使它们变成NaN而不是仅仅是摔倒。谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

e.scale.y = -1.5是否应该出现负号? 将高度设置为负数可以解释您的问题。

答案 1 :(得分:1)

如果e.TotalManipulation.Scale.Xe.TotalManipulation.Scale.Y等于NaN,则产品将等于NaN。请尝试使用以下代码进行测试(因为您不需要负数):

if (e.TotalManipulation.Scale.X > 0 && e.TotalManipulation.Scale.Y > 0)