想要实现图片的放大缩小可以通过在Image外面套一个ScrollViewer,然后设置ScrollViewer的ZoomMode="Enabled"

<FlipView ItemsSource="{x:Bind Images}">
<FlipView.ItemTemplate>
<DataTemplate>
<ScrollViewer ZoomMode="Enabled" MinZoomFactor="1">
<Image Source="{Binding }"/>
</ScrollViewer>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>

这样就可以粗糙地实现图片放缩了,为什么说是粗糙的,因为这样简单地弄会出现一个bug 。。。

把图片放大到超过屏幕宽度后,停止放大,会看到图片诡异地动了一下,

解决方案

控制图片的大小和ScrollViewer的Viewport一样大

<FlipView ItemsSource="{x:Bind Images}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch">
<FlipView.ItemTemplate>
<DataTemplate>
<ScrollViewer x:Name="ScrollViewerMain" ZoomMode="Enabled"
MinZoomFactor="0.5"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden">
<Image Source="{Binding }"
MaxWidth="{Binding Path=ViewportWidth,ElementName=ScrollViewerMain}"
MaxHeight="{Binding Path=ViewportHeight,ElementName=ScrollViewerMain}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</ScrollViewer>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>

再加个双击放大

给ScrollViewer加个DoubleTapped的事件处理

 private async void ScrollViewerMain_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
var scrollViewer = sender as ScrollViewer;
var doubleTapPoint = e.GetPosition(scrollViewer); if (Math.Abs(scrollViewer.ZoomFactor - 1.0) > 1E-)
{
scrollViewer.ChangeView(doubleTapPoint.X, doubleTapPoint.Y, );
}
else
{
var dispatcher = Window.Current.CoreWindow.Dispatcher;
await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () =>
{
scrollViewer.ChangeView(doubleTapPoint.X, doubleTapPoint.Y, );
});
}
}

附上Demo

FlipViewDemo.rar

参考链接

https://www.goedware.com/index.php/blog/3-pinch-zoom-image-in-uwp-app

http://igrali.com/2015/07/17/why-is-my-zoomable-scrollviewer-snapping-the-image-to-the-left/

https://stackoverflow.com/questions/37380661/uwp-zooming-image-with-pinch-zoom-and-double-tap-with-flip-view

[UWP] 解决FlipView图片放大的诡异bug的更多相关文章

  1. jqzoom插件图片放大功能的一些BUG

    建议使用cloud-zoom插件,jqzoom插件就不要使用了 点击查看——图片放大镜——jQuery插件Cloud Zoom 刚开始使用的是jqzoom插件,但问题太多了,就不说插入到页面中使用了, ...

  2. WPF图片放大后模糊的解决方法

    原文:WPF图片放大后模糊的解决方法 WPF中显示图片的方式很多,可以用Image控件来显示图像,或者直接设置一个控件的Background.图片的放大也很简单,直接设置显示图片的控件的Width和H ...

  3. 推荐两款简单好用的图片放大jquery插件

    一.zoomfiy.js 推荐可以从这里下载 使用说明: 使用该jquery 插件引入该插件的js:zoomfiy.js 或 min引入该插件的css:zoomfiy.css 或 min前后顺序都可j ...

  4. Safari 下用 "location.href = filePath" 实现下载功能的诡异 bug

    Safari 下的一些诡异 bug 我们已经领教一二,比如前文中说的 无痕浏览模式下使用 localStorage 的 API 就会报错.今天我们要讲的是利用 location.href = file ...

  5. JavaScript 点击图片放大功能

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. javascript仿新浪微博图片放大缩小及旋转效果

    javascript仿新浪微博图片放大缩小及旋转效果 经常看到新浪微博里有图片放大缩小旋转效果,感觉效果还不错,所以就想试着做一个类似的demo出来,至于旋转对于IE可以用滤镜来解决,标准的浏览器可以 ...

  7. vue项目 一行js代码搞定点击图片放大缩小

    一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单.一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来. 两个月不到跟了四个项 ...

  8. JavaScript 实现用户点击图片放大

    JavaScript 实现用户点击图片放大 一.契机 情况是这样的,之前推荐朋友去建站.后面他专门写了一篇文章说如何实现 "用户点击图片实现放大效果",俺就好好 "拜读& ...

  9. Android 实现九宫格、点击图片放大全屏浏览等

    项目GitHub地址https://github.com/tikeyc/TNinePlaceGridView_Android https://github.com/tikeyc/TikeycAndro ...

随机推荐

  1. [2018CCPC吉林赛区(重现赛)- 感谢北华大学] 补题记录 躁起来

    1007 High Priestess 埃及分数 1008 Lovers 线段树维护取膜意义下的区间s和. 每个区间保存前缀lazy和后缀lazy. #include <iostream> ...

  2. HDU3652:B-number(数位DP)

    Problem Description A wqb-number, or B-number for short, is a non-negative integer whose decimal for ...

  3. 杭电第六场 hdu6362 oval-and-rectangle 积分求期望

    oval-and-rectangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. 计蒜客 ACM训练联盟周赛 第一场 Alice和Bob的Nim游戏 矩阵快速幂

    题目描述 众所周知,Alice和Bob非常喜欢博弈,而且Alice永远是先手,Bob永远是后手. Alice和Bob面前有3堆石子,Alice和Bob每次轮流拿某堆石子中的若干个石子(不可以是0个), ...

  5. codeforces 764 C. Timofey and a tree(dfs+思维)

    题目链接:http://codeforces.com/contest/764/problem/C 题意:给出一个树,然后各个节点有对应的颜色,问是否存在以一个点为根节点子树的颜色都一样. 这里的子树颜 ...

  6. Linux开机启动过程(个人理解)

    简述Linux启动过程 1)BIOS开机自检 2)MBR引导 3)启动引导程序菜单(GRUB) 4)加载内核 5)加载虚拟文件系统加载函数模块 6)启动系统进程 /sbin/init --->/ ...

  7. springmvc——@InitBinder注解

    转自http://www.cnblogs.com/douJiangYouTiao888/p/6765220.html 有些类型的数据是无法自动转换的,比如请求参数中包含时间类型的数据,无法自动映射到C ...

  8. 【Redis】主从复制

    一.概述 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从 ...

  9. Vulkan(1)用apispec生成Vulkan库

    Vulkan(1)用apispec生成Vulkan库 我的Vulkan.net库已在(https://github.com/bitzhuwei/Vulkan.net)开源,欢迎交流. apispec. ...

  10. 每天学会一点点(map常量)

    map常用的声明方式(使用静态代码块): public final static Map map = new HashMap(); static { map.put("key1", ...