[英]Resize UI elements with mouse UWP
我可以使用Pinch to zoom
缩放比例,但也需要使用鼠标Pinch to zoom
。 我如何实现它,因为我也可以拖动图像。
这是我用手指缩放的代码
private void Image_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var ct = (CompositeTransform)image.RenderTransform;
ct.ScaleX *= e.Delta.Scale;
ct.ScaleY *= e.Delta.Scale;
}
我可以使用Pinch缩放缩放比例,但也需要使用鼠标进行缩放。
您可以使用UIElement.PointerWheelChanged事件来更改比例:
代码隐藏:
private void Image_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
{
int delta=e.GetCurrentPoint((UIElement)sender).Properties.MouseWheelDelta;
var ct = (CompositeTransform)img.RenderTransform;
ct.ScaleX += delta / 120;//you can set 120 to other value to change the sensitivity
ct.ScaleY += delta / 120;
}
Xaml:
<Canvas Width="800" Height="800">
<Image Name="img" Source="ms-appx:///Assets/profiler.jpeg" PointerWheelChanged="Image_PointerWheelChanged"></Image>
</Canvas>
它不是最终结果,调整大小后需要释放鼠标按钮
private void Image_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var border = sender as Border;
if (mousePos.X> pos.X|| mousePos.Y > pos.Y)
{
ct.ScaleX += e.Delta.Translation.X;
ct.ScaleY += e.Delta.Translation.Y;
}
if (mousePos.X < pos.X || mousePos.Y < pos.Y)
{
ct.ScaleX += e.Delta.Translation.X;
ct.ScaleY += e.Delta.Translation.Y;
}
}
private void ImageBorder_PointerPressed(object sender, PointerRoutedEventArgs e)
{
pos = Window.Current.CoreWindow.PointerPosition;
}
private void ImageBorder_PointerReleased(object sender, PointerRoutedEventArgs e)
{
pos = Window.Current.CoreWindow.PointerPosition;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.