首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CListCtrl显示透明PNG图片的有关问题

2013-12-29 
CListCtrl显示透明PNG图片的问题上边的图是我做出来的效果,用的是ListCtrl控件,但是里边的PNG不是透明的。

CListCtrl显示透明PNG图片的问题
CListCtrl显示透明PNG图片的有关问题

上边的图是我做出来的效果,用的是ListCtrl控件,但是里边的PNG不是透明的。下边是实现的部分代码



上边的图是我做出来的效果,用的是ListCtrl控件,但是里边的PNG不是透明的。下边是实现的部分代码


    Bitmap* pThumbnail = (Bitmap*)bmp.GetThumbnailImage(sourceWidth, sourceHeight, NULL, NULL); //设定缩略图的大小
    HBITMAP hBmp;
    pThumbnail->GetHBITMAP(Color(255,255,255),&hBmp);
    CBitmap *pImage = CBitmap::FromHandle(hBmp);         //转换成CBitmap格式位图

    TCHAR drive[MAX_PATH] = _T("");
    TCHAR dir[MAX_PATH] = _T("");
    TCHAR fname[MAX_PATH] = _T("");
    TCHAR ext[MAX_PATH] = _T("");

    _wsplitpath(path ,drive, dir,fname, ext);
    CString itemName(fname);
    itemName.Append(ext);

    int index = m_imageList.Add(pImage,RGB(255,255, 255));
    m_listCtrl.InsertItem(index, itemName, index); 


http://bbs.csdn.net/topics/390670670我是要实现这样的效果。
求大神帮解决,在线等回答
VC加载 png 没有透明功能,要想使加载到程序中的png图像有透明工能,请在加载图片后,加入以下代码:

Cimage mimage;
 HRESULT hr =   mimage.Load(szImageName);
    for(int i = 0; i < mimage.GetWidth(); i++)  
    {  
        for(int j = 0; j < mimage.GetHeight(); j++)  
        {  
            unsigned char* pucColor = reinterpret_cast<unsigned char *>(mimage.GetPixelAddress(i , j));  
            pucColor[0] = pucColor[0] * pucColor[3] / 255;  
            pucColor[1] = pucColor[1] * pucColor[3] / 255;  
            pucColor[2] = pucColor[2] * pucColor[3] / 255;  
        }  
    }  

[解决办法]
或者请看http://blog.csdn.net/cashey1991/article/details/7517034

热点排行