mfc中关于dib位图储存bmp文件   谁这方面有过深入的研究的   在存储的时候要自己写个DIB类  然后在存储的时候调用这个类的  我现在遇到这个问题还不知道怎么解决的

解决方案 »

  1.   

    我谷歌了   可是还不会的   那个类加到工程里面以后  在C**Dlg里面怎么调用的  我不会用的  有没有什么资料推荐下的
      

  2.   

    我有个现成的,你看下:
    BOOL Save(char *bmpName, BYTE *imgBuf, int width, int height, RGBQUAD *pColorTable, BYTE bitcount)
    { if (!imgBuf)
    return FALSE; int colorTablesize=0;
    if (bitcount==8)
    {
    colorTablesize=1024;
    } int lineByte=(width*bitcount/8+3)/4*4;
    FILE *fp=fopen(bmpName,"wb");
    if (fp==0)
    {
    return FALSE;
    }

    BITMAPFILEHEADER fileHead;
    fileHead.bfType=0x4D42;//BMP类型
    fileHead.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+colorTablesize+lineByte*height;
    fileHead.bfReserved1=0;
    fileHead.bfReserved2=0;

    fileHead.bfOffBits=14+40+colorTablesize;

    fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);

    BITMAPINFOHEADER head;
    head.biBitCount=bitcount;
    head.biClrImportant=0;
    head.biClrUsed=0;
    head.biCompression=BI_RGB;
    head.biWidth=width;
    head.biHeight=height;
    head.biPlanes=1;
    head.biSize=40;
    head.biSizeImage=lineByte*height;
    head.biXPelsPerMeter=0;
    head.biYPelsPerMeter=0;
    fwrite(&head,sizeof(BITMAPINFOHEADER),1,fp); if (bitcount==8)
    {
    fwrite(pColorTable,sizeof(RGBQUAD),256,fp);
    }
    fwrite(imgBuf,height*lineByte,1,fp);
    fclose(fp);

    return TRUE;
    }
      

  3.   

    你这程序中FILE *fp=fopen(bmpName,"wb");是不是指定一个进行保存图片的文件夹吗 ?
    fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);这句是不是将图片写到上一句的bmpName文件夹里面吗?
    bmpName是文件夹还应该算是bmp位图文件名呢?要是bmp位图名字的话,那该位图存储在哪个路径下来?
    诸多迷惑  还请多多指教
      

  4.   

    其实你说的很对    什么东西自己要是不主动去捣鼓   就算别人说的再清楚自己也不会弄明白的    但是这个我已经捣鼓了很长时间了    从一开始mfc什么都不知道   到现在都是知道怎么着手   已经实在捣鼓不出来了    才跑来问这问那的   其实 我也不想这样的
      

  5.   

    如 E:\MyFolder\MyBitMapFile.BMP
    这个函数是我一直在用的,没问题的