Информатика и технология программирования

         

Работа с битовыми растрами


Графические изображения обычно представлены растрами -прямоугольными полями черно-белых или цветных точек (пикселов). В памяти растр может отображаться различными способами. Если в одном байте находятся биты различных пикселов, либо сам пиксел имеет различные характеристики, закрепленные за отдельными битами, то без поразрядных операций не обойтись. В качестве примера рассмотрим ряд операций с черно-белым растром 256 x 256 точек, размещенном в памяти построчно в массиве из 8192 байтов.


unsigned char BITS[8192];
void PutBit(int x, int y, int bit)
{
unsigned char m,b;
m = 1 &#60&#60 (x % 8); // Маска пиксела в байте


b = (bit &#38 1) &#60&#60 (x % 8); // Бит пиксела в байте


BITS[y*8 + x/8] &#38= ~m; // Очистить пиксел


BITS[y*8 + x/8] |= b; // Записать пиксел


}

При вычислении индекса в массиве BITS учитывается, что одна строка растра занимает в массиве 256/8=8 байтов и что пикселы строки размещаются в байте, начиная с младшего бита.



Содержание раздела