首页 > 解决方案 > MaxWidth 和 MaxHeight 将较小的图像扩展到它们的实际值之外

问题描述

当使用Image控件在 wpf 上加载图像时,Canvas一切正常。但是某些图像很大并且在表面上会爆炸MaxHeight,所以我设置和以在最大约束内MaxWidth渲染这些图像。

然后大图像加载工作,但副作用是小于最大尺寸和宽度的图像然后被拉伸到最大尺寸。这是由于Stretch被设置的值不是None.

<Image Source="{Binding Source}"
       Stretch="UniformToFill"
       MaxHeight="200"
       MaxWidth="400"/>

结果,左侧为 No Max,右侧为 Max。

左图没有设置最大值。右图设置了最大值


问题

很明显,我有相互竞争的优先级,一方面稍后(在初始加载之后)图像可以调整大小,并且调整大小需要Stretch设置,因此它会扩展到该调整大小。所讨论的初始竞争需求是按原样加载图像,除非它们超过最大尺寸

我如何根据需要实现两者;加载时在大于最大值时才将其大小调整为最大值?然后在图像加载后它可以Stretch设置为UniformToFill


尝试的东西

我尝试Stretch在加载后设置,但它似乎具有相同的效果。我猜它不是图像加载后触发的,但不幸的是在控件加载时触发;这发生在图像加载之前。

private void LoadedImage(object sender, RoutedEventArgs e)
{
    if (sender is Image image)
        image.Stretch = Stretch.UniformToFill;
}

标签: wpfimage.net-core

解决方案


推荐阅读