У меня есть двумерный массив байтовых пикселей, из которого я хочу создать BitmapSource. Учитывая, что BitmapSource.Create () требует 1D массива плюс шаг, как мне передать мой 2D массив?
Мое текущее решение - использовать BlockCopy для копирования в промежуточный массив 1D:
int width = pixels2D.GetLength(1); int height = pixels2D.GetLength(0);
byte[] pixels1D = new byte [width * height ];
Buffer.BlockCopy(pixels2D, 0, pixels1D, 0, pixels1D.Length * sizeof(byte));
return BitmapSource.Create(width, height, 96, 96, System.Windows.Media.PixelFormats.Gray8,
null, pixels1D, stride: width * sizeof(byte));
но это зависит от того, что, как я понимаю, является неопределенной упаковкой размеров массива. Я хотел бы решение, которое избегает этого, и в идеале избегает копирования данных. Спасибо.