C# UWP应用中的图像平滑

C# UWP应用中的图像平滑,c#,image,uwp,uwp-xaml,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(FileA

我有一个小型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,图像可以平滑。我需要在显示前对图像进行一些处理(更改一些像素),但在这之后我还需要对图像进行平滑处理。你能帮我吗

我还使用WriteableBitmap更改了一些像素,并得到了相同的结果(未平滑)。看起来我需要告诉图像控制如何画这个


这里有更多信息

我测试了您的代码。你会发现,如果你没有为图像控件设置
高度
宽度
属性,图片看起来都是一样的。因此,一个看起来平滑,而另一个看起来不平滑的原因是图像控件缩放图片。如果不进行缩放,图片看起来不会有什么不同。我想这可能是由于矢量和位图图像之间的差异造成的

您应该能够通过创建一张平滑的图片来解决此问题,该图片的大小与您只想在应用程序中显示的大小相同,并将图像控件设置为与图片相同的大小,或者不设置
高度
宽度
属性,这可能会得到解决

我的结果是:


我在另一个线程上找到了解决方案。 如果更改代码行的顺序,则有助于:

    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);
    }
所以我们应该分配图像源,然后将源流设置为位图

看起来,图像控件对图片的解码相当灵活,因此它可以适应实际的用户界面大小。如果先将BitmapImage设置为Image.Source,则图片将像第二个一样进行适当平滑


谢谢你的回答。不幸的是,或者我不明白你的意思,或者这不是解决我的问题的办法。我需要缩放图像,因为需要有某种图像查看器能够改变图像,所以用户应该能够看到不同比例的图像。这里是所有项目的档案-