如何找到用于捏合和拉伸手势的x和y比例分量?

时间:2018-07-09 19:24:53

标签: c# uwp uwp-xaml

我正在使用收缩/拉伸来调整对象的大小。我惊讶地发现ManipulationDeltaRoutedEventArgs具有单个Scale属性。我想允许捏/拉伸以与x和y手指位置的拉伸增加相同的比例增加/减少宽度和高度。换句话说,如果拉伸是垂直的,我想使对象更高,但不能更宽。

如果不支持该功能,是否可以确定捏合/伸展手势的开始和结束手指位置?

1 个答案:

答案 0 :(得分:0)

不能直接获得scaleX和scaleY来在x和y中设置相应的Scale值。但是您可以从PointerEnteredPointerExited事件中获得手指的开始和结束位置。您可以在这些事件处理程序中找到要点,

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)。因此,您应该设置一个固定的坐标。您可以尝试使用 Root面板PointerEnteredPointerExited事件,该事件包括调整大小后的对象,以获取捏合/伸展手势的位置。

//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);
}