CImage加载多种图片的方法

CImage加载多种图片的方法

此方法经测试是可以加载jpg,gif,bmp等常见格式图片的。

 

 // 创建一个imagelist

  CImageList imgList;

  imgList.Create(16, 16,  ILC_COLORDDB|ILC_MASK, 0, 1);
   
  // 创建一个bitmap对象指针
  Bitmap *pBmp = new Bitmap(16, 16, PixelFormat32bppRGB);
  
   CString strImageFile = _T("C:\\test.gif");

   if(_access(strImageFile, 0) != 0)  // not exist
   {

        return;
    }
   
   // 将 strImageFile 绘制到pBmp中的对应位置上
   Graphics gc(pBmp);
   gc.SetInterpolationMode(InterpolationModeHighQualityBilinear);
   
   // 从strImageFile生成一个Bitmap
   Gdiplus::Bitmap *pImage = Bitmap::FromFile((const wchar_t *)_bstr_t(strImageFile));

   

  // 将该Bitmap绘制到pBmp中的正确位置上
  Rect rcTar(16, 0, 16,16);
   

 //先将区域内填充为白色
   Color col(255,255,255);
   SolidBrush sb(col);
   gc.FillRectangle(&sb, rcTar);

 

// 将图像填充到指定区域

   gc.DrawImage(pImage, rcTar, 
    0, 0, pImage->GetWidth(), pImage->GetHeight(), 
    UnitPixel, 0, 0, 0);   
      
   delete pImage;
  }
  
  // 从pBmp获得一个HBITMAP, 然后得到CBitmap对象
  HBITMAP hBitmap;
  pBmp->GetHBITMAP(1, &hBitmap); 

  CBitmap bmp;
  bmp.Attach(hBitmap);   
  
  imgList.Add(&bmp, (255, 255, 255));
  delete pBmp;

  
  m_List.SetImageList(&imgList, LVSIL_SMALL); 

你可能感兴趣的:(CImage加载多种图片的方法)