4

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

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

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

另外我不想缩放图片,以任何方式改变它,我已经看到了一些关于这个问题的类似主题,但到目前为止,没有一个适用于我的案例。我只需要缩小我的图片,直到没有可见的垂直/水平滚动条。

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

4

1 回答 1

5

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

如果您想要更多控制 - 将图像大小属性保留为默认值Auto(和VerticalAlignment/HorizontalAlignment不同于Stretch),将ScrollViewer( ViewportWidth/ViewportHeight) 的纵横比与Image(ActualWidth/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-zoomsnapppoints-in-winrt-xaml/

于 2013-02-25T08:12:16.730 回答