现在已经把jpeg文件读到内存缓冲区中,请问如何显示?
我曾试过用ipicture接口,发现画面效果不太好,请问有什么比较有效的办法吗?
谢谢

解决方案 »

  1.   

    http://www.helpwork.com/downdata/book/programming/vc/book/VCdby/source%20code/Bitmap/jpeg.zip
      

  2.   

    http://www.codeproject.com/bitmap/CXImage.asp不使用ipicture接口,使用jpeg.lib,实现了几个photoshop的功能。
    非常好!
      

  3.   

    谢谢两位老兄。
    但是,有没有简便一点的方法?
    我曾找过几个封装好的类库,可是我的难点在于jpeg文件是保存在内存缓冲区中的啊
      

  4.   

    我用IPicture接口实现的,效果很好啊
      

  5.   

    IPicture很好呀,画面效果不好是不是因为你放大显示的原因?
      

  6.   

    几位老兄说的都不错。哈哈,会给分的,放心。
    其实,并不是ipictrure不好,而是我传输的数据丢失,所以,才会那样。
    对了,是这样的,我在做一个东西,要求就是远程服务端把jpeg传过来,然后我马上显示。期间经过中转服务器转发,但是,现在有个问题,如果发送端发的太快,中转服务器缓冲区就会溢出,请问有什么好办法没有
      

  7.   

    另外,还有个问题,就是用ipicture接口,显示文字的效果不好,请问有何改良办法
      

  8.   

    VC调用JPEG ,此方法也适用于gif.
    void CPICView::OnDraw(CDC* pDC) 

    CPICDoc* pDoc = GetDocument(); 
    ASSERT_VALID(pDoc); IPicture *pPic; 
    IStream *pStm; CFileStatus fstatus; 
    CFile file; 
    LONG cb; if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg", 
    fstatus)&& 
    ((cb = fstatus.m_size) != -1)) 

    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); 
    LPVOID pvData = NULL; 
    if (hGlobal != NULL) 

    if ((pvData = GlobalLock(hGlobal)) != NULL) 

    file.ReadHuge(pvData, cb); 
    GlobalUnlock(hGlobal); 
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID* 
    )&pPic))) 

    OLE_XSIZE_HIMETRIC hmWidth; 
    OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth); 
    pPic->get_Height(&hmHeight); double fX,fY; 
    fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->Ge 
    tDeviceCaps(HORZSIZE)*100.0); 
    fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->G 
    etDeviceCaps(VERTSIZE)*100.0); 
    if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-h 
    mHeight,NULL))) 
    AfxMessageBox("Failed To Render The picture!"); 
    pPic->Release(); 

    else 
    AfxMessageBox("Error Loading Picture From Stream!"); 



    else 
    AfxMessageBox("Can"t Open Image File!");