Окт 16

Массив пикселов

Пикселы изображения хранятся в массиве пикселов aBitmapBits. Если поле biHeight заголовка информационного блока содержит положительное значение, то строки развертки хранятся в обратном порядке, если же значение отрицательное — то в прямом порядке.
Пикселы упаковываются внутри строки развертки для экономии места. Строки дополняются битами до границы двойного слова.
Количество байтов на строку вычисляется по следующей формуле:
bytesPertine = ((width bitCount + 31) / 32) 4: где width — ширина изображения в пикселах, a bitCount — количество бит на пиксел.
Для несжатых растров DIB, у которых поле biCompression имеет значение BI_RGB, обращение к отдельным пикселам массива является простой операцией, которая реализуется достаточно эффективно. Массив пикселов aBitmapBits можно объявить как двумерный, что отражало бы семантику хранения в нем строк развертки изображения. Однако основные функции отображения DIB в контексте устройства получают в качестве аргумента адрес одномерного массива. Поэтому удобней объявлять aBitmapBits как одномерный массив, а прямой доступ к пикселам осуществлять посредством преобразования пары индексов «логического» двумерного массива в эквивалентный индекс «физического» одномерного массива.