PixelBuffer.AsStream() метод устарел?

Я проверял библиотеку MS.

и похоже PixelBuffer.AsStream() устарел для разработки Univesal App.

Я использую Win10(сборка 10240) с версией VS2015 Community.

Я что-то пропустил?

Кроме того, каков наилучший способ кодирования или записи потока в WriteableBitmap из массива байтов или целых чисел?

Я пробовал метод из BitmapEncoder, но я мог создать его только так:

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

и после этого не было никаких изменений, видимых на WriteableBitmap. в противном случае фреймворк выбрасывал исключения (за пределами моего кода)

Декодер работал нормально, и все пиксели были правильно декодированы и переданы в массив byte[] sourcePixels.

2 ответа

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);

Это ответ, как записать в WriteableBitmap, но все еще один вопрос открыт:

Является PixelBuffer.AsStream() устарел?

Другие вопросы по тегам