Ну, Игорь, не все так плохо!

Задача обработки DIB средствами Клариона вполне решаема, ничего особо мудрого там нет.
Нужно разобраться в двух моментах:
1. Что именно лежит в DIB, формируемой внешней функцией, и
2. Как это подсунуть кларионовскому Image.
По первому вопросу возможно три варианта:
1. В DIB лежат только пиксели, без каких-либо заголовков (маловероятно).
2. Нормальный DIB: структура BITMAPINFOHEADER + пиксели.
3. Нормальный DIB, к которому зачем-то пришпилили заголовок файла *.BMP: BITMAPFILEHEADER + BITMAPINFOHEADER + пиксели.
Проще всего это сделать, проанализировав исходный код внешней функции, который, судя по всему, у Вас есть.
Судя по коду, который Вы приводили выше, эта самая внешняя функция, в числе прочего, производит конвертацию 32 бит - 24 бит, так что ничего дополнительно конвертировать Вам не нужно.
Таким образом, задача сводится всего-навсего, к вычислению смещения структуры BITMAPINFOHEADER и массива пикселей в исходной DIB.
Соответственно, по второму вопросу, нужно разобраться, что именно нужно подсовывать кларионовскому Image. Здесь есть два варианта:
1. Скорее всего, это нормальный DIB: BITMAPINFOHEADER + пиксели. В этом случае, Вам нужно всего лишь правильно подсчитать размер памяти:
biSizeImage + biSize.
2. Маловероятно, но может быть отдельно BITMAPINFOHEADER и пиксели. В этом случае, Вам нужно всего лишь правильно подсчитать адреса: пиксели будут начинаться с ADDRESS(...) + biSize. Количество пикселей - biSizeImage.
kreator писал(а): 27 Январь 2020, 17:43
Что касается BMP-формата, то biBitCount=24, а на пиксель всё равно отводится 4 байта.
Это не *.BMP, а DIB. Вся необходимая информация лежит в BITMAPINFOHEADER. Четвертый байт в 32-битном DIB - это прозрачность. 24-битный ее не поддерживает. Как ни странно, но основные проблемы с 32-битным форматом: мало кто может его корректно отобразить, поэтому целесообразно его конвертировать в 24-битный.
P.S. А можно показать код функции render_pixel? Я, в свое время, делал конвертацию 32-бит - 24 бит через WinAPI GetPixel(), возможно, там как-то по-другому?