解决方案 »

  1.   

    以下是我有医疗设备中实际使用的程序,但愿对LZ有帮助。1. 声明一个图像类
    CImage m_img; // 扫描图像2. 创建空图像
    m_img.Create( IMGWIDTH, -IMGHEIGHT, 8 ); // 负高度表示原点在左上角,img.GetBits(); 得到数据区的起点。3. 填数据,其中m_pBuf是原始数据
    LPBYTE p = (LPBYTE)m_img.GetBits();
    LPWORD p2 = m_pBuf;  // 原始数据
    const int w2 = (IMGWIDTH + 0x3) & ~0x3; //?? 实际宽度是4的倍数?是否与操作系统或硬件有关。
    int dd = m_nMaxTemp - m_nMinTemp; // 窗宽上次的温窗
    if( dd < 5 * CAMERA_KT ) // 设置温差最小值为10度,防止除零、未初始化等等。
    dd = 5 * CAMERA_KT;
    for( int i = 0; i < IMGHEIGHT; i++ ){
    int j = 0;
    for( ; j < IMGWIDTH; j++ )
    {
    int w = (*p2++ - m_nMinTemp) * 255 / dd;
    if( w < 0 ) w = 0;
    if( w > 255 ) w = 255;
    *p++ = (BYTE)w;
    }
    for( ; j < w2; j++, p++ ); //?? 补齐多余的宽度?
    }4. 在OnPaint事件中显示
    m_img.StretchBlt( pDC->m_hDC, m_rcImg, SRCCOPY ); // 画数据,