缩小图像以适合ScrollViewer尺寸

时间:2013-02-24 23:32:51

标签: image windows-runtime zoom scrollviewer

我有一个小问题,相应地缩放图像。我的XAML中有Image,附加了ScrollViewer,因此可以缩放。像这样:

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

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

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

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

1 个答案:

答案 0 :(得分:4)

您可以设置Width的尺寸(HeightImage)以匹配ScrollViewer.ViewportWidth/Height,这样默认情况下所有图片都可见。然后将MinZoomFactor设置为1,这样任何人都不会超出有意义的范围,而MaxZoomFactor会缩小到有意义的范围。

如果您想要更多控制权 - 将图片大小属性保留为默认Auto(和VerticalAlignment / HorizontalAlignment不同于Stretch),请比较{的宽高比{1}}(ScrollViewerViewportWidth/ViewportHeightImage假设为ActualWidth/ActualHeight并且Image.Stretch="None"实际已加载)。如果Image宽高比更宽,则您需要的ScrollViewerMinZoomFactor。如果ScrollViewer.ViewportHeight / Image.ActualHeight宽高比更宽,则您需要的ImageMinZoomFactorScrollViewer.ViewportWidth / Image.ActualWidth应为1,除非您想要缩放到每个图像像素的屏幕像素数以上(应用程序的缩放率为100%)。

您可能会发现我的博客文章很有趣:

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