我的应用程序中有一堆(非常)大的图像。对他们来说,适合我的ImageView的和相应的图像控制,我用下面的XAML代码:只调整大图像
<Image Name="imageEdit" Stretch="Uniform" />
现在使用大图像时,因为它们会自动缩小这种奇妙的作品。但是,当显示小图像时,它们会被放大并因此变得模糊。
有没有一种方法可以防止这种情况发生,只有这些图像调整大小,否则实际上会达到图像控件的边界之后?
我的应用程序中有一堆(非常)大的图像。对他们来说,适合我的ImageView的和相应的图像控制,我用下面的XAML代码:只调整大图像
<Image Name="imageEdit" Stretch="Uniform" />
现在使用大图像时,因为它们会自动缩小这种奇妙的作品。但是,当显示小图像时,它们会被放大并因此变得模糊。
有没有一种方法可以防止这种情况发生,只有这些图像调整大小,否则实际上会达到图像控件的边界之后?
在WPF中有一个属性正是因为这个原因,被称为StretchDirection
,将其设置为DownOnly
完全符合您的要求。
您可以通过转换器将图像大小(尺寸)绑定到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();
}
}
作为解决方法,您可能需要尝试设置BitmapScalingMode。
也看看this SO question讨论模糊的WPF图像。