我有一个小问题,相应地缩放图像。我的XAML中有Image
,附加了ScrollViewer
,因此可以缩放。像这样:
<ScrollViewer x:Name="ImageScrollViewer">
<Image x:Name="ImagePanel"
Stretch="Uniform"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</ScrollViewer>
我想做的是,如果图像太大而无法适应图像控制并且需要缩小(仅在这种情况下),我想以编程方式设置ScrollViewer的ZoomFactor所以它适合Image控件。我的问题是,我不知道如何确定这个因素,考虑到我的图像的宽度和高度。
此外,我不想缩放图片,以任何方式更改它,我在SO上看到了一些类似的主题,但到目前为止,没有一个适用于我的情况。我只需要缩小我的照片,直到看不到垂直/水平滚动条。
对于如何做到这一点的任何建议,非常感谢,谢谢!
答案 0 :(得分:4)
您可以设置Width
的尺寸(Height
,Image
)以匹配ScrollViewer.ViewportWidth/Height
,这样默认情况下所有图片都可见。然后将MinZoomFactor
设置为1,这样任何人都不会超出有意义的范围,而MaxZoomFactor
会缩小到有意义的范围。
如果您想要更多控制权 - 将图片大小属性保留为默认Auto
(和VerticalAlignment
/ HorizontalAlignment
不同于Stretch
),请比较{的宽高比{1}}(ScrollViewer
)ViewportWidth/ViewportHeight
(Image
假设为ActualWidth/ActualHeight
并且Image.Stretch="None"
实际已加载)。如果Image
宽高比更宽,则您需要的ScrollViewer
为MinZoomFactor
。如果ScrollViewer.ViewportHeight / Image.ActualHeight
宽高比更宽,则您需要的Image
为MinZoomFactor
。 ScrollViewer.ViewportWidth / Image.ActualWidth
应为1,除非您想要缩放到每个图像像素的屏幕像素数以上(应用程序的缩放率为100%)。
您可能会发现我的博客文章很有趣: