【问题标题】:Resize UI elements with mouse UWP使用鼠标 UWP 调整 UI 元素的大小
【发布时间】:2016-10-19 21:47:03
【问题描述】:

我有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;
  }

【问题讨论】:

    标签: c# win-universal-app uwp


    【解决方案1】:

    我有捏缩放缩放,但我也需要用鼠标来做。

    您可以使用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>
    

    【讨论】:

    • 我看到了这个变种,但我想用鼠标来做,就像你调整窗口大小时一样
    • “调整窗口大小时用鼠标操作”是什么意思?
    • 我的意思是,点击Image的边框,你可以拖动它并调整它的大小
    【解决方案2】:

    这不是最终结果,您需要在调整大小后释放鼠标按钮

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

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      相关资源
      最近更新 更多