Ja, im 15 oder 16bit modus gibts nur 32 graustufen. mit 2x2 dithering ließe sich das auf 128 erhöhen.
MfG, Michael
in etwa:
// input: x,y: pixel koordinate - gray: 0 = schwarz, 127 = weiß
void setgraypixel(int x, int y, unsigned char gray)
{
char pattern[4][2][2] =
{{{0, 0}, {0, 0}},
{{{1, 0}, {0, 0}},
{{{1, 0}, {1, 0}},
{{{1, 1}, {1, 0}}};
unsigned char grayvalue = (gray >> 2) + pattern[gray & 3][x & 1][y & 1];
if (grayvalue > 31) grayvalue = 31;
setpixel(x, y, grayvalue, grayvalue, grayvalue); // zeichnet pixel and x,y mit der farbe r,g und b (jeweils bereich 0 bis 31)
}