У меня, вероятно, глупый вопрос, но я не могу понять, как решить его самостоятельно.
Я получил указатель байта * из пиксельных данных SoftwareBitmap, затем я отредактировал некоторые пиксельные данные ...и теперь я не знаю, как использовать этот байт * указатель.
Как я могу преобразовать его, например, в IBuffer, чтобы использовать его для создания новой карты SoftwareBitmap?Есть ли более простой способ создания нового растрового изображения?
Вот код, кстати, даже не задумывался, что он может помочь:
Импорт DLL
[ComImport]
[Guid("5b0d3235-4dba-4d44-865e-8f1d0e4fd04d")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
unsafe interface IMemoryBufferByteAccess
{
void GetBuffer(out byte* buffer, out uint capacity);
}
Основная функция
private unsafe SoftwareBitmap PixelateImage(SoftwareBitmap bitmap, Boolean AlphaEnabled)
{
using (var buffer = bitmap.LockBuffer(BitmapBufferAccessMode.Read))
{
using (var reference = buffer.CreateReference())
{
((IMemoryBufferByteAccess)reference).GetBuffer(out byte* data, out uint capacity);
// Doing things with data[int index] bytes…
SoftwareBitmap bmp = new SoftwareBitmap(bitmap.BitmapPixelFormat, bitmap.PixelWidth, bitmap.PixelHeight, bitmap.BitmapAlphaMode);
// How to use byte* data else?
// bmp.CopyFromBuffer(IBuffer) <=== How to get an IBuffer from byte*?
return bmp;
}
}
}
Спасибо всем.