如题缩问  我现在想用CListCtrl和CImageList来实现图片缩略图显示效果图片是可以显示出来 但是效果并不是原图的缩略形式  而是显示出了该图的一部分并且只能显示BMP格式位图文件,JPG格式不能显示请问如何能做成Windows系统中图片浏览缩略图模式的那种样式最好有详细代码和过程教程

解决方案 »

  1.   

    你显示的图片的方法是什么?是BitBlt么?
    建议用StretchBlt就行!可用根据大小拉伸!
      

  2.   

    m_ImageList.Create(128, 128, ILC_COLORDDB|ILC_MASK, 1, 0);
    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);这就是我显示图片的方法   运行效果达不到系统图片缩略图显示的效果  只能显示源图片文件的部分 没有进行缩略显示全图
      

  3.   

    Create(128, 128, ILC_COLORDDB|ILC_MASK, 1, 0); 
    改成Create(64, 64, ILC_COLORDDB|ILC_MASK, 1, 0); 试试
      

  4.   

    m_listCtrl.SetImageList(&m_ImageList, LVSIL_NORMAL); 
    改成 m_listCtrl.SetImageList(&m_ImageList, LVSIL_SMALL); 都试试,我记不清楚了
      

  5.   

    Thumbnails Viewer using ListCtrl
    http://www.codeproject.com/KB/combobox/ThumbsViewer.aspx
      

  6.   

    参考这个例子,已经实现了基本功能Thumbnails Viewer using ListCtrlhttp://www.codeproject.com/KB/combobox/ThumbsViewer.aspx
      

  7.   

    这些都试过  没用  我的意思是把一张大小可能是1024*768大小的图片 能够像windows里面图片浏览缩略图样式在界面上缩显成128*128这样的小方格里完全显示出来  用什么方法可以实现  主要是实现自动将图片缩小这应该用什么方法显示效果最好
      

  8.   

    对 就是上面链接的这种效果   问题是我没用CXImage  而是用MFC的CImageList和CListCtrl做的 所以图片大小的处理需要自己完成
      

  9.   

    看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 好像就是参考这个实现的 
      

  10.   

    可以用GDI+实现,在导入图片的时候可以用GDI+把图片绘到内存,然后放进imagelist,这样可以支持几乎所有的类型的图片