仅调整大图像的大小

时间:2014-01-13 23:07:16

标签: c# wpf image resize scaling

我的应用程序中有一堆(非常)​​大图像。为了使它们适合我的ImageView和相应的Image控件,我使用以下XAML:

<Image Name="imageEdit" Stretch="Uniform" />

现在,当使用大图像时,这会非常有效,因为它们会自动缩小。但是,当显示小图像时,它们会被缩放得更高,从而变得模糊。

有没有办法可以防止这种情况发生,只有这些图像会调整大小,否则会实际到达图像控件的边界?

3 个答案:

答案 0 :(得分:6)

在WPF中,有一个名为StretchDirection的属性,将其设置为DownOnly完全符合您的要求。

答案 1 :(得分:2)

您可以通过转换器将图像大小(尺寸)绑定到Stretch属性。

然后在转换器中返回Stretch.None如果图像大小小于或等于可用空间,则Stretch.Uniform如果它更大。例如(只检查X维度):

public class SizeToStretchConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (int)value <= targetWidth ? Stretch.None : Stretch.Uniform;
    }

    public object ConvertBack(object value, Type targetType, object parameter,CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

答案 2 :(得分:0)

作为解决方法,您可以尝试设置BitmapScalingMode

另请参阅this SO question讨论模糊的WPF图像。