簡體   English   中英

使用鼠標UWP調整UI元素的大小

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM