高质量的图像缩放

时间:2012-10-18 07:45:47

标签: c# xaml windows-8 microsoft-metro windows-runtime

我已阅读此问题High Quality Image Scaling Library,但它仅适用于GDI +。

当我缩小我的应用中的Image时,它变得非常锯齿状。

我无法在Image课程中找到任何允许我提高缩小质量的属性。

我该怎么做?

编辑:

我现在使用了这段代码:

BitmapImage img = new BitmapImage();
img.UriSource = new Uri(Graphic, UriKind.Relative);
return img;

其中Graphicstring,其中包含图片的路径,但我收到此异常:

  

类型' System.ArgumentException'的例外情况发生在Weather.DLL中,但未在用户代码中处理

     

附加信息:给定的System.Uri无法转换为Windows.Foundation.Uri。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=215849

据我所知,Windows.Foundation.Uri未在.net框架中使用。

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

3 个答案:

答案 0 :(得分:9)

在XAML中:

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

在C#中:

    BitmapImage bitmapImage = BitmapImage("URL HERE");
    bitmapImage.DecodePixelHeight = 250;

仅设置DecodePixelHeight或DecodePixelWidth。

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.decodepixelheight.aspx

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

http://msdn.microsoft.com/en-us/library/windows/apps/hh465362.aspx

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