UWP app

时间:2017-02-12 14:53:50

标签: c# image uwp uwp-xaml

我有一个小型UWP应用程序,它以两种方式加载相同的图像:

        var folder = Package.Current.InstalledLocation;
        var file = await folder.GetFileAsync("TestImage.png");

        var bitmapImage1 = new BitmapImage();
        using (var stream = await file.OpenAsync(FileAccessMode.Read))
        {
            await bitmapImage1.SetSourceAsync(stream);
        }

        var bitmapImage2 = new BitmapImage(new Uri(BaseUri, "TestImage.png"));

        _image.Source = bitmapImage1;
        //_image.Source = bitmapImage2;

问题是图像控制以不同的方式显示相同的图像。对于bitmapImage1图像没有平滑,但对于bitmapImage2,它没关系。 How it looks like。我需要在show之前对图像进行一些操作(更改一些像素),但之后我还需要使用平滑的图像。你能帮帮我吗?

我还使用WriteableBitmap来改变一些像素并且具有相同的结果(没有平滑)。看起来我需要告诉Image控件如何绘制它。

以下是link to project了解更多信息

2 个答案:

答案 0 :(得分:0)

我测试了你的代码。如果您没有为图像控件设置HeightWidth属性,您会发现图片看起来都是一样的。因此,一个看起来平滑但另一个看起来不是图像控制缩放图片的原因。没有缩放图片看起来不会有所不同。我想这可能会导致矢量和位图图像之间存在差异。

你应该能够通过创建一个平滑的图片来解决它,你想要在应用程序中显示它的大小,并将图像控件设置为与图片相同的大小,或者不设置Height和{ {1}}属性,这可能会解决。

我的结果:

enter image description here

答案 1 :(得分:0)

我已经在另一个线程上获得了解决方案。 如果改变代码行的顺序,它会有所帮助:

    var folder = Package.Current.InstalledLocation;
    var file = await folder.GetFileAsync("TestImage.png");

    var bitmapImage1 = new BitmapImage();
    _image.Source = bitmapImage1;

    using (var stream = await file.OpenAsync(FileAccessMode.Read))
    {
        await bitmapImage1.SetSourceAsync(stream);
    }

因此我们应该分配Image源,而不是将源流设置为Bitmap。

  

看来,图像控制非常灵活地解码图像,因此它可以适合实际的UI大小。如果首先将BitmapImage设置为Image.Source,那么将像第二个一样正确地平滑图片。