2013-02-24 142 views
1

我對縮放相應的圖像有點問題。我的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

回答

3

您可以設置尺寸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/