代码之家  ›  专栏  ›  技术社区  ›  VasileF

缩小图像以适应ScrollViewer尺寸

  •  5
  • VasileF  · 技术社区  · 12 年前

    我对相应地缩放图像有点问题。我有一个 Image 在我的XAML中,使用 ScrollViewer 附加以便可以缩放。这样地:

    <ScrollViewer x:Name="ImageScrollViewer">
        <Image x:Name="ImagePanel" 
               Stretch="Uniform" 
               VerticalAlignment="Center" 
               HorizontalAlignment="Center"/>
    </ScrollViewer>
    

    我想做的是,如果图像太大,无法适应图像控件,需要缩小(仅在这种情况下),我想用程序设置ScrollViewer的ZoomFactor,使其适合图像控件。我的问题是,考虑到我的图像的宽度和高度,我真的不知道如何确定这个因素。

    此外,我不想放大图片,也不想以任何方式改变它,我在SO上看到了一些类似的主题,但到目前为止,还没有一个适用于我的案例。我只需要缩小图片,直到看不到垂直/水平滚动条为止。

    任何关于如何做到这一点的建议,都将不胜感激,谢谢!

    1 回复  |  直到 10 年前
        1
  •  5
  •   Filip Skakun    12 年前

    可以设置尺寸( Width , Height )的 Image 以匹配 ScrollViewer.ViewportWidth/Height ,以便默认情况下所有图像都可见。然后设置 MinZoomFactor 到1,这样就不会有人缩小到有意义的范围之外 MaxZoomFactor 去做一些有意义的事情。

    如果您想要更多的控制-将“图像大小”属性保留为默认值 Auto (以及 VerticalAlignment / HorizontalAlignment 不同于 Stretch ),比较的纵横比 ScrollViewer ( ViewportWidth/ViewportHeight )到 形象 ( ActualWidth/ActualHeight 假设 Image.Stretch="None" 并且 形象 实际加载)。如果 滚动条 纵横比更宽- 最小缩放因子 你会想要的 ScrollViewer.ViewportHeight / Image.ActualHeight 。如果 形象 纵横比更宽- 最小缩放因子 你会想要的 ScrollViewer.ViewportWidth / Image.ActualWidth . 最大缩放因子 应为1,除非您希望缩放到每个图像像素的屏幕像素以上(应用程序的缩放比例为100%)。

    你可能会觉得我的博客文章很有趣:

    http://blog.onedevjob.com/2012/07/21/creating-a-zoomable-scrollviewer-with-zoomsnappoints-in-winrt-xaml/