1) Один из способов - использовать memcpy:
memcpy( &bits[rect.Pitch * y + 4 * x]), &pixel, 4 );
2) Есть несколько разных способов. Проще всего определить структуру следующим образом:
struct ARGB
{
char b;
char g;
char r;
char a;
};
Затем измените свой код загрузки пикселей на следующий:
ARGB pixel;
memcpy( &pixel, &bits[rect.Pitch * y + 4 * x]), 4 );
char red = pixel.r;
Вы также можете получить все значения, используя маски и смены. * 1010 например *
unsigned char a = (intPixel >> 24);
unsigned char r = (intPixel >> 16) & 0xff;
unsigned char g = (intPixel >> 8) & 0xff;
unsigned char b = (intPixel) & 0xff;