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 数组。
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()
过时了吗?