缩小图像以适应ScrollViewer尺寸

5

我在缩放图像方面遇到了一些小问题。我在XAML中有一个Image,附加了一个ScrollViewer以便进行缩放。代码如下:

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

我希望在图像太大无法适应图像控件并需要缩小时(仅在此情况下),能够编程设置 ScrollViewer 的 ZoomFactor 以适应 Image 控件。我的问题是,考虑到我的图像的宽度和高度,我不知道如何确定该因素。
另外,我不想缩放图片或以任何方式更改它。我曾在 SO 上看到一些类似的主题,但迄今为止,没有一个适用于我的情况。我只需要将图片缩小到没有垂直/水平滚动条可见。
欢迎提出任何关于如何做到这一点的建议,非常感谢!

你知道你的ScrollViewer的尺寸吗? - Filip Skakun
1个回答

5
您可以将Image的尺寸(WidthHeight)设置为与ScrollViewer.ViewportWidth/Height匹配,以便默认情况下所有图像都可见。然后将MinZoomFactor设置为1,这样没有人会缩小到不合理的程度,而将MaxZoomFactor设置为有意义的值。
如果您想要更多的控制 - 将Image大小属性保留为默认的Auto(并且VerticalAlignment/HorizontalAlignmentStretch不同),比较ScrollViewerViewportWidth/ViewportHeight)与ImageActualWidth/ActualHeight,假设Image.Stretch="None"并且Image实际上已加载)。如果ScrollViewer的宽高比更宽,则您所需的MinZoomFactor将是ScrollViewer.ViewportHeight / Image.ActualHeight。如果Image的宽高比更宽,则您所需要的MinZoomFactor将是ScrollViewer.ViewportWidth / Image.ActualWidth。除非您希望缩放超过屏幕像素每个图像像素(在应用程序100%缩放时),否则MaxZoomFactor应为1。
您可能会发现我的博客文章有趣:http://blog.onedevjob.com/2012/07/21/creating-a-zoomable-scrollviewer-with-zoomsnappoints-in-winrt-xaml/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接