怎么做一像Windows   缩略图   的功能?只是做一个浏览图片的功能. 

解决方案 »

  1.   

    首先你要找到一个图片处理的库, 网上有开源的, 可以自动按比例放大缩小图片, 然后就很简单了, 你可以先随便建个DIALOG试下, 把图片目录打开, 读出图片, 用库函数缩小, 然后把图片用GDI函数按顺序贴在DIALOG上. 功能基本就这样了, 至于具体实现需要一个成熟的框架包装一下.
      

  2.   

    http://www.codeproject.com/KB/miscctrl/ScalablePictureBox.aspx
      

  3.   

    /********************************************** 
    * 函 数 名: ShowPic
    * 描    述: 在控件窗口中预览图片
    * 输入参数:   lpstrFile:文件名 
                  hWnd 
                  nScrWidth:输出图片的宽度 
                  nScrHeight:输出图片的高度 
                  nScrWidth、nScrHeight是输出图片的实际大小,换而言之是指缩放后的尺寸 
    * 输出参数: 无
    * 返 回 值: 状态
    * 创 建 人: chenzhp
    * 日    期: 2007/03/15
    * 修改记录: 
    *     修改人      修改日期      修改描述
    ***************************************************/
    HRESULT CVlsChapDlg::ShowPic(char *lpstrFile,HWND hWnd,int nScrWidth,int nScrHeight) 

     //   CWnd cWnd;
     //   cWnd.FromHandle(hWnd);   
        
        HDC hDC_Temp= ::GetDC(hWnd); 
        IPicture *pPic; 
        IStream *pStm;     BOOL bResult;     HANDLE hFile=NULL; 
        DWORD dwFileSize,dwByteRead;      //打开硬盘中的图形文件 
        hFile=CreateFile(lpstrFile,GENERIC_READ, 
        FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);     if (hFile!=INVALID_HANDLE_VALUE) 
        { 
            dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数         if (dwFileSize==0xFFFFFFFF) 
                return E_FAIL; 
        } 
        else 
        { 
            return E_FAIL; 
        } 
         //分配全局存储空间 
        HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize); 
        LPVOID pvData = NULL;     if (hGlobal == NULL) 
            return E_FAIL;     if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块 
            return E_FAIL;     ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区     GlobalUnlock(hGlobal);     CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);     //装入图形文件 
        bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic); 
        if(FAILED(bResult)) 
            return E_FAIL;     OLE_XSIZE_HIMETRIC hmWidth;//图片的真实宽度 
        OLE_YSIZE_HIMETRIC hmHeight;//图片的真实高度 
        pPic->get_Width(&hmWidth); 
        pPic->get_Height(&hmHeight); 
        //将图形输出到屏幕上(有点像BitBlt) 
        bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight, 
        0,hmHeight,hmWidth,-hmHeight,NULL);     pPic->Release();     CloseHandle(hFile);//关闭打开的文件     if (SUCCEEDED(bResult)) 
        { 
            return S_OK; 
        } 
        else 
        { 
            return E_FAIL; 
        } 
      

  4.   

    http://www.codeproject.com/KB/GDI-plus/GdiPThumbnailsViewer.aspx