我的应用程序中有一堆(非常)大图像。为了使它们适合我的ImageView和相应的Image控件,我使用以下XAML:
<Image Name="imageEdit" Stretch="Uniform" />
现在,当使用大图像时,这会非常有效,因为它们会自动缩小。但是,当显示小图像时,它们会被缩放得更高,从而变得模糊。
有没有办法可以防止这种情况发生,只有这些图像会调整大小,否则会实际到达图像控件的边界?
答案 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图像。