现在我把一个vs2003的项目转到vs2008,其中没有发生什么问题,但发现用CBitmap load的位图都变了颜色,我的bmp是32位,用  CBitmap bitmap;
bitmap.LoadBitmap(IDR_IMAGE);  然后在一个CStatic显示m_wndImage.ModifyStyle(0xF,SS_BITMAP); 
m_wndImage.SetBitmap(bitmap);  
m_wndImage.ShowWindow(TRUE);
m_wndImage.Invalidate();图片出来了,但就是颜色不对,好像掉了颜色一样,不懂是不是vs2008不支持32位的bmp? 怎样解决这个问题

解决方案 »

  1.   

    有可能是因为对话框的背景颜色不一样,32位位图中可能有ALPHA通道,这些透明部分的颜色就会不一样。
      

  2.   

    刚才放了一个24位的bmp,也是一样,难道vs2008的问题,你们可以试试,用代码来load一个bmp,然后放到一个CStatic,图象真的会变颜色
      

  3.   

    我这里也没有任何的失真现象。楼主,你可以试试随便添加个按钮,然后等窗口形成后,再用按钮来触发显示图片,看看有没有失真 CBitmap bitmap;
    BOOL bFlag = bitmap.LoadBitmap(IDB_BITMAP_SMILE); if(bFlag)
    {
    m_statBitmap.ModifyStyle(0xf,SS_BITMAP);
    m_statBitmap.SetBitmap((HBITMAP)bitmap);
    m_statBitmap.Invalidate();
    }
      

  4.   

    把CBitmap bitmap定义为类的成员变量,不要用局部变量。