【问题标题】:Zoom Out Image to fit ScrollViewer Dimensions缩小图像以适合 ScrollViewer 尺寸
【发布时间】:2013-02-10 01:38:20
【问题描述】:

我在相应地缩放图像时遇到了一点问题。我的 XAML 中有一个 Image,并附加了一个 ScrollViewer,因此可以对其进行缩放。像这样:

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

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

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

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

【问题讨论】:

  • 你知道你的 ScrollViewer 的尺寸是多少吗?

标签: image windows-runtime zooming scrollviewer


【解决方案1】:

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

如果您想要更多控制 - 将图像大小属性保留为默认 Auto(并且 VerticalAlignment/HorizontalAlignmentStretch 不同),将 ScrollViewer (ViewportWidth/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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 2011-09-30
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多