源代码在这:http://download.csdn.net/source/2931354
运行一下会发现,背景色为一种很奇怪的颜色。并且还有白色的被截断。(使图片看起来不完整)
如果启用网上的通道扩散处理的方法。还是会存在丑陋的黑边。。我很奇怪为什么别人说透明的图片绘制出来的是白色的背景 而我的却是这种奇怪的背景呢。
图片使用的qq扣出来的资源请不要怀疑图片里面修改了某些值。。因为这张图片在windows图片查看器下是正常的。
并且用phtoshop查看 并无异常。。就是透明背景。各位高手给点思路 实在太奇怪了

解决方案 »

  1.   

    OnInitDialog()的代码改为如下
    CString strPath;
    {
    LPTSTR szBuff = strPath.GetBuffer(4000); DWORD dwLen = GetModuleFileName(NULL, szBuff, 4000);
    strPath.ReleaseBufferSetLength(dwLen); int nFind = strPath.ReverseFind(_T('\\'));
    strPath = strPath.Left(nFind+1);
    }
    m_imgTest.Load( strPath + _T("icon\\Setting.png") );
    OnPaint的代码改为如下
    CRect rcImg;
    rcImg.left = 140;
    rcImg.top = 80;
    rcImg.right = rcImg.left + m_imgTest.GetWidth();
    rcImg.bottom = rcImg.top + m_imgTest.GetHeight(); for(int i = 0; i < m_imgTest.GetWidth(); ++i)
    {
    for(int j = 0; j < m_imgTest.GetHeight(); ++j)
    {
    unsigned char* pucColor = (unsigned char*)m_imgTest.GetPixelAddress(i , j);
    pucColor[0] = pucColor[0] * pucColor[3] / 255;
    pucColor[1] = pucColor[1] * pucColor[3] / 255;
    pucColor[2] = pucColor[2] * pucColor[3] / 255;
    }
    }
    m_imgTest.AlphaBlend(dc.m_hDC, rcImg.left, rcImg.top); 
      

  2.   

    问下楼上一个问题。
    这里也是图片的像素处理。
    放onpaint和放inidlg有啥不同啊。
    不过。。效果确实好了。。我只是担心 在onpaint里处理像素会存在效率问题
      

  3.   

    哦。。效果是一样的。。原来是我没有用对函数。
    不知道是谁说的 CImage应该尽量使用Draw函数看来不能尽信。多谢兄弟