PixelBuffer.AsStream() 方法已过时

本文关键字:过时 方法 AsStream PixelBuffer | 更新日期: 2023-09-27 18:17:29

我正在检查MS库。

看起来PixelBuffer.AsStream()对于通用应用程序开发来说已经过时了。

我正在使用Win10(内部版本10240(和VS2015社区版本。

我错过了什么吗?

此外,将流从字节或整数数组编码或写入 WriteableBitmap 的最佳方法是什么?

我正在尝试从位图编码器中获取该方法,但我只能通过这种方式创建它:

BitmapEncoder enc = await BitmapEncoder.CreateForTranscodingAsync(fileStream, decoder);
enc.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, W, H, 200, 200, sourcePixels);
之后,在

可写位图上看不到任何修改。否则框架会抛出异常(在我的代码之外(

解码

器工作正常,我已经正确解码了所有像素并将其流式传输到 byte[] sourcePixel 数组。

PixelBuffer.AsStream() 方法已过时

AsStream 并没有过时。它有效,如链接的 MSDN 示例代码所示。这是一种使IBuffer管理更容易的扩展方法,而不是直接在IBuffer上母亲。请参阅 https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.windowsruntime.windowsruntimebufferextensions.asstream(v=vs.110(.aspx

要使用它,请将以下内容放在源文件的顶部:

using System.Runtime.InteropServices.WindowsRuntime

然后,您将能够调用PixelBuffer.AsStream,如文档示例所示:

// Open a stream to copy the image contents to the WriteableBitmap's pixel buffer 
using (Stream stream = Scenario4WriteableBitmap.PixelBuffer.AsStream()) 
{ 
    await stream.WriteAsync(sourcePixels, 0, sourcePixels.Length); 
}     
InMemoryRandomAccessStream MStream = new InMemoryRandomAccessStream();
 MStream.Size = (ulong)wb.PixelBuffer.Length;
UpdateAndRender(sourcePixels, null, elapsedTimeUnits);
Random Rand = new Random();
Rand.NextBytes(sourcePixels);
BitmapEncoder enc = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, MStream);
enc.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)wb.PixelWidth, (uint)wb.PixelHeight, 200, 200, sourcePixels);
                                                                                await enc.FlushAsync();
wb.SetSource(MStream);

这是如何写入可写位图的答案,但仍然有一个问题悬而未决:

PixelBuffer.AsStream()过时了吗?