Я пытаюсь преобразовать RenderTargetBitmap в массив байтов, который затем будет отправлен на внешний монохромный OLED-экран. Я знаю, что для растрового изображения, чтобы правильно отобразить выравнивание бит/байт должно быть LSB до MSB & Сверху вниз:Преобразование RenderTargetBitmap в байт [] для отображения на встроенном экране?
Но я не могу понять, как получить pixeldata в RenderTargetBitmap в этом формате.
На данный момент я получил:
RenderTargetBitmap renderTargetBitmap; //This is already set higher up
DataReader reader = DataReader.FromBuffer(await renderTargetBitmap.GetPixelsAsync());
// Placeholder for reading pixels
byte[] pixel = new byte[4]; // RGBA8
// Write out pixels
int index = 0;
byte[] array = new byte[renderTargetBitmap.PixelWidth*renderTargetBitmap.PixelHeight];
using (reader)
{
//THIS IS WHERE I THINK I'M SCREWING UP
for (int x = 0; x < rHeight; x++)
{
for (int y = 0; x < rWidth; y++)
{
reader.ReadBytes(pixel);
if (pixel[2] == 255)
array[index] = 0xff;
else
array[index] = 0x00;
index++;
}
}
}
sh1106.ShowBitmap(buffer); //Send off the byte array
Кажется, вы не используете й и переменные у петли на всех, и «индекс» переменный не обновляется везде и всегда равен 0. – Evk
я просто удалил 'индекс ++' по ошибке при копировании его в стеке переполнение. Я исправил это. А насчет петель x и y, где я заблокирован. Вся эта часть должна быть переписана, но я не могу понять, как это сделать. – user2950509