WinRT:RenderAsync 模糊图像输出
WinRT: RenderAsync Blurs Image Output
在 RenderTargetBitmap
class 上使用 RenderAsync
方法时,我有一个独特的案例。问题是当我 运行 我的笔记本电脑上的代码(可以在下面看到)时它工作正常并且图像正确呈现。但是当我 运行 我的联想平板电脑上的代码时,图像模糊了。
正在使用的代码:
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();
}
这是原始图像的样子以及它在我的笔记本电脑上的渲染方式:
这是完全相同的代码在我的平板电脑上显示的样子 运行:
有人可以提供一些帮助吗?
非常感谢!
好的,所以解决方案非常简单。只需更改以下代码并使用 renderTargetBitmap
而不是 element
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 300, 300, bytes);
在 RenderTargetBitmap
class 上使用 RenderAsync
方法时,我有一个独特的案例。问题是当我 运行 我的笔记本电脑上的代码(可以在下面看到)时它工作正常并且图像正确呈现。但是当我 运行 我的联想平板电脑上的代码时,图像模糊了。
正在使用的代码:
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();
}
这是原始图像的样子以及它在我的笔记本电脑上的渲染方式:
这是完全相同的代码在我的平板电脑上显示的样子 运行:
有人可以提供一些帮助吗?
非常感谢!
好的,所以解决方案非常简单。只需更改以下代码并使用 renderTargetBitmap
而不是 element
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 300, 300, bytes);