如何把CImageList的内容保存到bmp文件中
我用显示在窗口后再得到一个CBitmap,但是如果图片大的话,超过窗口就显示不出来了。
只要能把CImageList的所有图片保存到一个CBitmap就可以了,
写文件已经实现了。

解决方案 »

  1.   

    假设你有:CImageList imglist; 一个保存bitmap的函数SaveBitmapToFile(CBitmap *pBitmap, ......); 并且在某个窗口类中执行下面的代码(因为要用到CClientDC): int nCount = imglist.GetImageCount(); IMAGEINFO imginfo;
    imglist.GetImageInfo(0, &imginfo);
    int cx = imginfo.rcImage.right - imginfo.rcImage.left;
    int cy = imginfo.rcImage.bottom - imginfo.rcImage.top;
    int nWidth = cx * nCount;
    int nHeight = cy;

    CClientDC dc(this);
    CDC dcMem;
    dcMem.CreateCompatibleDC(&dc);
    CBitmap bitmap;
    bitmap.CreateCompatibleBitmap(&dc, nWidth, nHeight);
    CBitmap *pOldBitmap = (CBitmap *)dcMem.SelectObject(&bitmap);
    dcMem.PatBlt(0, 0, nWidth, nHeight, WHITENESS);

    for(int i = 0; i < nCount; ++ i)
    {
    POINT pt;
    pt.x = cx * i;
    pt.y = 0; imglist.Draw(&dcMem, i, pt, ILD_NORMAL);
    } // then you can save bitmap here
    SaveBitmapToFile(&bitmap, ......); dcMem.SelectObject(pOldBitmap);
    bitmap.DeleteObject();(以上代码未对函数的返回值进行校验,实际使用中要注意添加)
      

  2.   

    按照BMP文件格式往里填数据就行啦!