我正在尝试使用操作来重新缩放画布。在调试下面的代码时,似乎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
条件确实阻止了这个问题。看起来将高度/宽度设置为小于1的东西只会使它们变成NaN而不是仅仅是摔倒。谢谢你的帮助
答案 0 :(得分:2)
e.scale.y = -1.5是否应该出现负号? 将高度设置为负数可以解释您的问题。
答案 1 :(得分:1)
如果e.TotalManipulation.Scale.X
或e.TotalManipulation.Scale.Y
等于NaN
,则产品将等于NaN
。请尝试使用以下代码进行测试(因为您不需要负数):
if (e.TotalManipulation.Scale.X > 0 && e.TotalManipulation.Scale.Y > 0)