2014-10-01 285 views
0

我正在开发Windows Phone应用程序(由于技术原因,它必须是WP7)。我需要显示原始存储为高分辨率PNG的图像,但它们显示的尺寸较小。我在<Grid>内部使用了<Image>星号行高。WP7:如何平滑缩放图像?

问题是,缩小图像看起来有点波涛汹涌(好像缩小算法不好),但我似乎无法找到一种方式来顺利显示它们,而不事先知道图像的显示大小和以编程方式生成新图像。

是否有一个属性可以更改,以便应用程序使用不同的缩小算法,因此图像仅在XAML中定义,或者我坚持必须在后面的代码中编写逻辑,以便图像看起来平滑?

更新:我有一些截图显示的问题。

  1. 只要内部的<Grid>

Choppy logo

一个 <Image>
  • 一个<ViewBox>内的<Image>内部的<Grid>
  • Choppy logo with ViewBox

    ViewBox可以帮助缩放,但它使用的算法是相同的,这对我来说根本没有用。

    +0

    听起来像是[视框(http://msdn.microsoft.com/en-us/windows/apps/windows.ui.xaml.controls.viewbox) – 2014-10-01 19:18:06

    +0

    作为作业您需要处理的解决方案数量有限,可以从服务器下载所需大小的图像,并使用更好的重采样算法进行准备? – 2014-10-01 19:19:08

    +0

    我可以在服务器上对它们进行预处理,但如果这完全可以通过XAML语法来完成,我也会很好奇。如果它不能,那么我会使用你的解决方案。 – 2014-10-01 19:24:36

    回答

    0

    见下文后重新大小的图像,这可能帮助你

    的Microsoft.Phone组件包括WriteableBitmap class, SaveJpeg()。 SaveJpeg签名如下所示: 您可以指定图像高度和宽度以进行缩放。

    public static void SaveJpeg(
        this WriteableBitmap bitmap, 
        Stream targetStream, 
        int targetWidth, 
        int targetHeight, 
        int orientation, 
        int quality 
    ); 
    

    Resizing Images in Windows Phone 7