有一个8位的灰度图,为了能显示给BitmapInfo结构赋值,但在bmicolors赋值后,每次运行都会报错,说是内存不能read,不知道为什么。后来只好将8位改成了24位,终于可以显示了,但是文件变大了。
为什么会报错呢?难道bmicolors数组不能改写吗?
BITMAPINFO *BInfo = new BITMAPINFO; BInfo->bmiHeader.biBitCount = 8;
BInfo->bmiHeader.biClrImportant = 0;
BInfo->bmiHeader.biClrUsed = 256;
BInfo->bmiHeader.biCompression = 0;
BInfo->bmiHeader.biHeight = 64;
BInfo->bmiHeader.biPlanes = 1;
BInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
BInfo->bmiHeader.biSizeImage = 64*64;
BInfo->bmiHeader.biWidth = 64;
BInfo->bmiHeader.biXPelsPerMeter = 0;
BInfo->bmiHeader.biYPelsPerMeter = 0;         for(int i=0;i<=255;i++)
         {
             BInfo->bmiColors[i].rgbBlue = i;
             BInfo->bmiColors[i].rgbGreen = i;
             BInfo->bmiColors[i].rgbBlue = i;
         }