WinRT:RenderAsync模糊图像输出

时间:2015-08-12 11:45:08

标签: c# .net windows-runtime windows-8.1 winrt-xaml

RenderAsync课程中使用RenderTargetBitmap方法时,我有一个独特的案例。问题是当我在我的笔记本电脑上运行代码(可以在下面看到)时,它工作得很好,图像渲染正确。但是当我在联想平板电脑上运行代码时,它会模糊图像。

正在使用的代码:

var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(element, (int) element.Width, (int) element.Height);
var pixels = await renderTargetBitmap.GetPixelsAsync();

using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
    var bytes = pixels.ToArray();
    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint) element.ActualWidth, (uint) element.ActualHeight, 300, 300, bytes);

    await encoder.FlushAsync();
}

这是原始图像的样子以及它在我的笔记本电脑上的呈现方式:

enter image description here

这是在完全相同的代码运行后在我的平板电脑上的外观:

enter image description here

有人可以提供一些帮助吗?

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

好的,所以解决方案非常简单。只需更改以下代码并使用renderTargetBitmap代替element

即可
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 300, 300, bytes);