编程实现:构造位图的头的类和函数网上到处都是,可下载一个,自己写很麻烦;也可用现成的.bmp读入后替换掉数据区。
非编程实现:直接将数据区文件以.raw后缀存盘,然后用photoshop打开,然后另存为.bmp格式。

解决方案 »

  1.   

    FILE *fp;
    char tmp[256*4];
    BITMAPFILEHEADER bfh;
    BITMAPINFOHEADER bih;memset(&bfh, 0, sizeof(bfh));
    memset(&bih, 0, sizeof(bih));
    bfh.bfType = 'BM';
    bfh.bfSize = 14+40+256*4+384*288;
    bfh.bfOffBits = 14+40+256*4;
    bih.biSize = sizeof(bih);
    bih.biWidth = 384;
    bih.biHeight = 288;
    bih.biPlanes = 1;
    bih.biBitCount = 8;
    fp = fopen("C:\\Test.bmp", "wb");
    if (fp != NULL) {
        fwrite(&bfh, 1, 14, fp);
        fwrite(&bih, 1, 40, fp);
        //设置灰阶的调色盘数据
        for(int n=0; n<256; n++) {
            memset(tmp+n*4, n, 3);
            tmp[n*4+3] = 0;
        }
        //写入灰阶的调色盘数据
        fwrite(tmp, 1, 256*4, fp);
        fwrite(Data, 1, 384*288, fp); //这儿Data是你采集到的数据
        close(fp);
    }
      

  2.   

    我不是将数据写入文件中,所有的一切我都在内存中操作
    我想江图像在内村中建立好,然后显示再屏幕上,而不是
    写入bmp文件中
    谢谢 jishiping
      

  3.   

    写内存也可以,去掉BITMAPFILEHEADER 那部分就可以直接当HBITMAP用了
      

  4.   

    int  Size;
    char *buff;
    BITMAPINFOHEADER* pbih;Size = 40+256*4+384*288;
    buff = new char[Size];
    memset(buff, 0, Size);
    pbih = (BITMAPINFOHEADER*)buff;
    pbih->biSize = 40;
    pbih->biWidth = 384;
    pbih->biHeight = 288;
    pbih->biPlanes = 1;
    pbih->biBitCount = 8;
    //设置灰阶的调色盘数据
    for(int n=0; n<256; n++)
        memset(buff+40+n*4, n, 3);
    memcpy(buff+40+256*4, Data, 384*288); //这儿Data是你采集到的数据//画图时
    SetDIBitsToDevice(hDC, 0, 0, 384, 288, 0, 0, 0, 288, 
        buff+40+256*4, (BITMAPINFO*)buf, DIB_RGB_COLORS);
      

  5.   

    int  Size;
    char *buff;
    BITMAPINFOHEADER* pbih;Size = 40+256*4+384*288;
    buff = new char[Size];
    memset(buff, 0, Size);
    pbih = (BITMAPINFOHEADER*)buff;
    pbih->biSize = 40;
    pbih->biWidth = 384;
    pbih->biHeight = 288;
    pbih->biPlanes = 1;
    pbih->biBitCount = 8;
    //设置灰阶的调色盘数据
    for(int n=0; n<256; n++)
        memset(buff+40+n*4, n, 3);
    memcpy(buff+40+256*4, Data, 384*288); //这儿Data是你采集到的数据//画图时
    SetDIBitsToDevice(hDC, 0, 0, 384, 288, 0, 0, 0, 288, 
        buff+40+256*4, (BITMAPINFO*)buf, DIB_RGB_COLORS);