Xamarin 表单中的图像缩放

Image zoom in Xamarin forms

我想实现 Xamarin 表单图像缩放 属性。我确实在互联网上搜索了一段时间,但没有找到任何相关文档,谁能提供一些有关如何在 Xamarin Forms 中实现它的信息?

目前没有图像缩放属性。您必须使用自定义渲染器来实现这一点。 尝试使用 ScaleTo,Itz 类似于缩放功能,但不完全是缩放功能。希望对您有所帮助...

        var img = new Image {
            Source = "foo.png",
            Scale = .9
        };

        var stepper = new Stepper {
            Minimum = .1,
            Maximum = 1,
            Increment = .1,
            Value = .9,
        };

        stepper.ValueChanged += async (object sender, ValueChangedEventArgs e) => {
            img.ScaleTo(e.NewValue);
        };

我同样需要在 Xamarin Forms 的图像上实现缩放、单击...。

在论坛上我找到了一个为 3 个平台定义自定义渲染器的插件,它可以让你获得点击图像的坐标,然后实现你想要的缩放。

这里是插件的网址:http://www.mrgestures.com/

您开发的每个应用程序需要花费 10 欧元。根据您需要实施的内容以及您需要实施的次数,它并不昂贵。

问题与缩放 属性 有关,它缩放到 x 和 y 的中心, 我已经实现了这个扩展,不需要额外的渲染器。

   public static Task<bool> ScaleTo(this VisualElement view, double scale, double anchorX, double anchorY, uint length = 250, Easing easing = null)
    {
        var tcs = new TaskCompletionSource<bool>();
        if (easing == null)
        {
            easing = Easing.Linear;
        }

        new Animation(
            (v) =>
            {
                view.Scale = scale;
                view.AnchorX = anchorX;
                view.AnchorY = anchorY;
            }, 0, length
           ).Commit(view, nameof(view), 16, length, easing, finished: (f, a) => tcs.SetResult(a));
        return tcs.Task;
    }

您可以使用捏合手势识别器实现捏合缩放。

这是关于双指缩放的文档 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/gestures/pinch

同时如果要添加pan,可以结合上面的代码 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/gestures/pan

那么您将在 Xamarin.Forms

中拥有一个相当不错的全屏图像查看器

您可以使用这个 library,只需安装在您的 .netstandard 项目上即可!

然后您可以使用 Rg.Plugin.Popup 并通过提供 link

动态添加图像
  xmlns:pinch="clr-namespace:Xamarin.Forms.PinchZoomImage;assembly=Xamarin.Forms.PinchZoomImage" 

 <pinch:PinchZoom.Content>
     <Image Source="xxamarin.jpg" />
 </pinch:PinchZoom.Content>