缩小图像以适合ScrollViewer尺寸

缩小图像以适合ScrollViewer尺寸

问题描述:

我对缩放相应的图像有点问题。我的XAML中有一个Image,附有ScrollViewer,因此可以缩放。就像这样:缩小图像以适合ScrollViewer尺寸

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

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

此外,我不想扩大图片,以任何方式改变它,我看过一些类似的话题在这个问题上,但到目前为止,没有人申请我的情况。我只需要缩小我的照片,直到没有可见的垂直/水平滚动条。

关于如何做到这一点的任何建议,非常感谢,谢谢!

+0

你知道你的ScrollViewer的大小? – 2013-02-25 01:56:11

您可以设置尺寸Image的(WidthHeight)相匹配的ScrollViewer.ViewportWidth/Height,所以在默认情况下所有的图像是可见的。然后将MinZoomFactor设置为1,以便没有人缩小超出有意义范围的范围,并将MaxZoomFactor设置为有意义的范围。

如果你想要更多的控制 - 留在默认Auto(比Stretch不同VerticalAlignment/HorizontalAlignment)的图像大小属性时,ScrollViewerViewportWidth/ViewportHeight)的纵横比进行比较的ImageActualWidth/ActualHeight假设Image.Stretch="None",而且Image是实际加载)。如果ScrollViewer宽高比更宽 - MinZoomFactor您将需要ScrollViewer.ViewportHeight/Image.ActualHeight。如果Image宽高比更宽 - MinZoomFactor您将需要ScrollViewer.ViewportWidth/Image.ActualWidthMaxZoomFactor应该为1,除非您想缩放到每个图像像素的多个屏幕像素(在应用程序的100%缩放比例下)。

你可能会发现我的博客文章有意思:

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