想把采集卡采集到的数据作为图像像素的灰度值来生成8位Bmp图像显示出来,数据得到了,可就是显示不出来,估计是信息头或者调色板的问题,哪位好心人帮忙看一下 小弟不胜感激
        CDC *pDC=GetDlgItem(IDC_PICVIEW)->GetDC();                
        DWORD dwNumofPixel;
        LOGPALETTE* pLogPal;
        RGBQUAD* m_pRGBQUAD;
        dwNumofPixel=ImageWidth*ImageHeight;
        ASSERT(pDC);
        m_pRGBQUAD = new RGBQUAD[256];
        m_pGreyBMI = NULL;
        m_pGreyBMI = (BITMAPINFO*)(new BYTE[sizeof(BITMAPINFOHEADER)+256*4]);
        m_pGreyBMI->bmiHeader.biSize = sizeof(BITMAPINFOHEADER)+256*4;
        m_pGreyBMI->bmiHeader.biBitCount = 8;
        m_pGreyBMI->bmiHeader.biClrUsed = 256;//设置调色板
        RGBQUAD greyScale[256];
        for(int i=0; i<256; i++)
        {
                greyScale.rgbRed = i;
                greyScale.rgbGreen = i;
                greyScale.rgbBlue = i;
                greyScale.rgbReserved = 0;
        }
                memcpy(m_pGreyBMI->bmiColors, greyScale, sizeof(RGBQUAD)*256);
        pLogPal = NULL;
        pLogPal = (LOGPALETTE*)(new BYTE[sizeof(LOGPALETTE)+256*sizeof(PALETTEENTRY)]);
        pLogPal->palNumEntries = 256;
        pLogPal->palVersion = 0x300;
        for(i=0; i<256; i++)
        {
                pLogPal->palPalEntry.peRed = i;
                pLogPal->palPalEntry.peGreen = i;
                pLogPal->palPalEntry.peBlue = i;
                pLogPal->palPalEntry.peFlags = 0;
        }
m_pGreyBMI->bmiHeader.biWidth        = ImageWidth;
m_pGreyBMI->bmiHeader.biHeight        =ImageHeight;
m_pGreyBMI->bmiHeader.biBitCount= 8;
m_pGreyBMI->bmiHeader.biPlanes= 1;
m_pGreyBMI->bmiHeader.biCompression= BI_RGB;
m_pGreyBMI->bmiHeader.biSizeImage= dwNumofPixel;
m_pGreyBMI->bmiHeader.biXPelsPerMeter        = 0;
m_pGreyBMI->bmiHeader.biYPelsPerMeter        = 0;
m_pGreyBMI->bmiHeader.biClrUsed= 256;
m_pGreyBMI->bmiHeader.biClrImportant        = 0;
        
CDC* pDC=GetDlgItem(IDC_PICVIEW)->GetDC();
CPalette* pPal = new CPalette;
pPal->CreatePalette(pLogPal);
                        CPalette* pOldPal = pDC->SelectPalette(pPal, TRUE);
                        pDC->RealizePalette();
                        StretchDIBits(pDC->GetSafeHdc(),
                        0,                                                    0,                                                ImageWidth,                                        ImageHeight,
                        0,                                                0,                                                ImageWidth,
                        ImageHeight,
                        pData,
                        m_pGreyBMI,
                        DIB_RGB_COLORS,
                        SRCCOPY);
                        pDC->SelectPalette(pOldPal, TRUE);
                        delete pPal;
                        ReleaseDC(pDC);