C# 如何找到收缩和拉伸手势的x和y比例分量?
我正在使用“收缩/拉伸”调整对象的大小。我惊讶地发现,C# 如何找到收缩和拉伸手势的x和y比例分量?,c#,uwp,uwp-xaml,C#,Uwp,Uwp Xaml,我正在使用“收缩/拉伸”调整对象的大小。我惊讶地发现,操纵deltaroutedventargs有一个Scale属性。我想允许挤压/拉伸以与拉伸增加x和y手指位置相同的比例增加/减少宽度和高度。换句话说,如果拉伸是垂直的,我希望使我的对象更高,但不是更宽 如果不支持,是否可以确定捏/拉手势的起始和结束手指位置?您无法直接获取用于在x和y中设置相应比例值的scaleX和scaleY。但是您可以从PointerEntered和PointerExited事件中获取手指的起始和结束位置。您可以在这些事件
操纵deltaroutedventargs
有一个Scale
属性。我想允许挤压/拉伸以与拉伸增加x和y手指位置相同的比例增加/减少宽度和高度。换句话说,如果拉伸是垂直的,我希望使我的对象更高,但不是更宽
如果不支持,是否可以确定捏/拉手势的起始和结束手指位置?您无法直接获取用于在x和y中设置相应比例值的scaleX和scaleY。但是您可以从
PointerEntered
和PointerExited
事件中获取手指的起始和结束位置。您可以在这些事件处理程序中获得要点
private void MyImage_PointerExited(object sender, PointerRoutedEventArgs e)
{
var point= e.GetCurrentPoint(sender as Image).Position;
}
private void MyImage_PointerEntered(object sender, PointerRoutedEventArgs e)
{
var point = e.GetCurrentPoint(sender as Image).Position;
}
但是位置值基于UIElement左上角(0,0)。所以你应该设置一个固定的坐标。您可以尝试使用根面板的PointerEntered
和PointerExited
事件,该事件包括调整大小的对象,以获取收缩/拉伸手势的位置
//MyGrid is the root panel and includes the Image which would be resized.
private void MyGrid_PointerEntered(object sender, PointerRoutedEventArgs e)
{
Debug.WriteLine("EN>>>"+e.GetCurrentPoint(MyGrid).Position);
}
private void MyGrid_PointerExited(object sender, PointerRoutedEventArgs e)
{
Debug.WriteLine("ET>>>"+e.GetCurrentPoint(MyGrid).Position);
}
也许你可以检查一下这个手势的意思?你能说得更具体一点吗,小Y312?我查看了文档,并在尝试调整大小时跟踪了它的值更改,但没有看到任何可以使用的内容。但是我可能遗漏了什么。Scale属性是一个向量;
Scale.X
和.Y
不是你要找的吗?如果没有,请尝试使用e.ManipulationOrigin
和e.TotalManipulation.Translation
fromManipulationCompleted
event.Xiaoy312您是说UWP,ManipulationDeltaRoutedEventArgs
<根据doc(和我的观察结果),代码>增量刻度是一个浮点而不是一个向量。您是否在考虑另一个Scale
属性?至于操作已完成
,我正在调整对象的大小,因为他们正在挤压,所以我真的不能等到手势完成后再给他们反馈。Breeze,非常感谢你的回答。不过,恐怕它和Xaioy312的问题一样。我试图通过调整他们正在操纵的对象的大小,在挤压/拉伸过程中提供视觉反馈。“PointerExited”事件只有在整个操作完成后才会发生,此时为时已晚。我一直在寻找在每次操作delta
事件中x和y的变化,以便在他们挤压/拉伸时调整“手指下”的大小。我一直在寻找这样的应用程序,但没有成功。我开始怀疑这是否可能。目前,您在操作元素时无法获得scaleX和ScaleY,您可以向UserVoice网站提交此功能请求:。谢谢,Breeze。我按照你的建议提交了请求。知道继续尝试是浪费时间对我很有帮助。如果可以的话,我会投票赞成你的评论。