我正在使用收缩/拉伸来调整对象的大小。我惊讶地发现ManipulationDeltaRoutedEventArgs
具有单个Scale
属性。我想允许捏/拉伸以与x和y手指位置的拉伸增加相同的比例增加/减少宽度和高度。换句话说,如果拉伸是垂直的,我想使对象更高,但不能更宽。
如果不支持该功能,是否可以确定捏合/伸展手势的开始和结束手指位置?
答案 0 :(得分:0)
不能直接获得scaleX和scaleY来在x和y中设置相应的Scale值。但是您可以从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)。因此,您应该设置一个固定的坐标。您可以尝试使用 Root面板的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);
}