Czy ktoś jest wstanie wyjaśnić dlaczego poniższy kod generuje poprawną bitmapę dla wartości np. x = 4, y = 4. A dla wartości x = 10, y = 10 jest już źle zapisana bitmapa???
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
bfh.bfType = 0x4D42;
bfh.bfSize = sizeof(bfh) + sizeof(bih) + 3 * x * y;
bfh.bfReserved1 = 0;
bfh.bfReserved2 = 0;
bfh.bfOffBits = sizeof(bfh) + sizeof(bih);
bih.biSize = sizeof(bih);
bih.biWidth = x;
bih.biHeight = y;
bih.biPlanes = 1;
bih.biBitCount = 24;
bih.biCompression = BI_RGB;
bih.biSizeImage = 0;
bih.biXPelsPerMeter = 7874;
bih.biYPelsPerMeter = 7874;
bih.biClrUsed = 0;
bih.biClrImportant = 0;
fwrite(&bfh, 1, sizeof(bfh), f);
fwrite(&bih, 1, sizeof(bih), f);
//zapis bajt po bajcie do pliku f