看FreeImage源代码,FreeImage_Rescale函数的实现,支持8,16,24,32等格式,算法有几种,你可以测试下缩放效果DLL_API FIBITMAP * DLL_CALLCONV FreeImage_Rescale(FIBITMAP *dib, int dst_width, int dst_height, FREE_IMAGE_FILTER filter); http://freeimage.sourceforge.net/ 另外可以参考这篇论文 C code to zoom raster images up or down, with nice filtering. http://www-2.cs.cmu.edu/afs/cs.cmu.edu/Web/People/ph/src/zoom/ freeimage 好像就是参考这个实现的
建议用StretchBlt就行!可用根据大小拉伸!
m_listCtrl.SetImageList(&m_ImageList, LVSIL_NORMAL); strFilePath.Format(_T("C:\\Documents and Settings\\Administrator\\桌面\\"));
strFileName.Format(_T("ch03_20081215121131.bmp")); hBitmap = (HBITMAP)LoadImage(NULL, strFilePath + strFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
pBitmap->Attach(hBitmap);
m_ImageList.Add(pBitmap, RGB(255, 255, 255));
m_listCtrl.InsertItem(1, strFileName, 0);这就是我显示图片的方法 运行效果达不到系统图片缩略图显示的效果 只能显示源图片文件的部分 没有进行缩略显示全图
改成Create(64, 64, ILC_COLORDDB|ILC_MASK, 1, 0); 试试
改成 m_listCtrl.SetImageList(&m_ImageList, LVSIL_SMALL); 都试试,我记不清楚了
http://www.codeproject.com/KB/combobox/ThumbsViewer.aspx
http://freeimage.sourceforge.net/ 另外可以参考这篇论文 C code to zoom raster images up or down, with nice filtering. http://www-2.cs.cmu.edu/afs/cs.cmu.edu/Web/People/ph/src/zoom/ freeimage 好像就是参考这个实现的