C# 高质量图像缩放

C# 高质量图像缩放,c#,xaml,windows-8,microsoft-metro,windows-runtime,C#,Xaml,Windows 8,Microsoft Metro,Windows Runtime,我读过这个问题,但它只涉及GDI+ 当我在我的应用程序中缩小图像的比例时,它会变得非常粗糙 我在Image类中找不到任何允许我提高向下缩放质量的属性 我该怎么做 编辑: 我现在使用了以下代码: BitmapImage img = new BitmapImage(); img.UriSource = new Uri(Graphic, UriKind.Relative); return img; 其中Graphic是一个字符串,它包含图像的路径,但我遇到了以下异常: Weather.DLL中发生“

我读过这个问题,但它只涉及GDI+

当我在我的应用程序中缩小
图像的比例时,它会变得非常粗糙

我在
Image
类中找不到任何允许我提高向下缩放质量的属性

我该怎么做

编辑:

我现在使用了以下代码:

BitmapImage img = new BitmapImage();
img.UriSource = new Uri(Graphic, UriKind.Relative);
return img;
其中
Graphic
是一个
字符串
,它包含图像的路径,但我遇到了以下异常:

Weather.DLL中发生“System.ArgumentException”类型的异常,但未在用户代码中处理

附加信息:给定的系统。URI不能转换成窗口。详情请参阅

据我所知,<代码> Windows .Fund。Uri < /C> >不在<代码> .NET/COD>框架中使用。


那么为什么它会给我这个错误呢?

我最终创建了第二个更小的图像,并在所有需要缩小的地方使用它。

在XAML中:

    <Image Width="250" Height="250" Stretch="UniformToFill">
        <Image.Source>
           <BitmapImage UriSource="{Binding ImagePath}" DecodePixelHeight="250"/>
        </Image.Source>
    </Image>
仅设置DecodePixelHeight或DecodePixelWidth


通过使用内置的图像缩放支持,您可以完全避免遇到的问题:


您可以包括不同分辨率的图像的多个版本(相同的文件名,但具有已知后缀或位于已知文件夹中),系统将自动为用户设备的DPI加载相应的图像。

您在谈论哪种图像类别?您缩小图像的比例的因素是什么?您可以发布您的代码吗?@PaoloMoretti我的代码基本上只是一个设置较小宽度和高度的
标记。我不认为您可以在XAML中实现这一点。WPF具有用于更改插值模式的附加属性,但这在WinRT中不可用。您可能必须在代码隐藏中创建新的缩放图像。也许对你有帮助。
    BitmapImage bitmapImage = BitmapImage("URL HERE");
    bitmapImage.DecodePixelHeight = 250;