图片路径"res/back.jpg"。图片大小比PICTURE CONTROL大,需要按比例压缩一下。试了不少方法,都不行。

解决方案 »

  1.   

    这个控件好像不支持JPG文件吧
      

  2.   


    。。这样啊。那怎样在一个dialog里面全屏显示一副JPG图片呢?
      

  3.   

    用CImage类,CImage img;
    img.Load(图片路径)
    img.Draw(pic-control的HDC)
      

  4.   

    想省事可以使用bmp之类的图片。
      

  5.   

    给个函数吧:
    ::CoInitialize(NULL);  // COM 初始化
    HRESULT hr;
    CFile file;

    file.Open( "c:\\aa.jpg", CFile::modeRead | CFile::shareDenyNone );  // 读入文件内容
    DWORD dwSize = file.GetLength();
    HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
    LPVOID lpBuf = ::GlobalLock( hMem );
    file.ReadHuge( lpBuf, dwSize );
    file.Close();
    ::GlobalUnlock( hMem );
    IStream * pStream = NULL;
    IPicture * pPicture = NULL;
    // 由 HGLOBAL 得到 IStream,参数 TRUE 表示释放 IStream 的同时,释放内存
    hr = ::CreateStreamOnHGlobal( hMem, TRUE, &pStream );
    ASSERT ( SUCCEEDED(hr) );
    hr = ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture, ( LPVOID * )&pPicture );
    ASSERT(hr==S_OK);

    long nWidth,nHeight;  // 宽高,MM_HIMETRIC 模式,单位是0.01毫米
    pPicture->get_Width( &nWidth );    // 宽
    pPicture->get_Height( &nHeight );  // 高

    ////////原大显示//////
    CSize sz( nWidth, nHeight );
    pDC->HIMETRICtoDP( &sz );  // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位
    pPicture->Render(pDC->m_hDC,0,0,sz.cx,sz.cy,
    0,nHeight,nWidth,-nHeight,NULL);

    ////////按窗口尺寸显示////////
    // CRect rect; GetClientRect(&rect);
    // pPicture->Render(pDC->m_hDC,0,0,rect.Width(),rect.Height(),
    // 0,nHeight,nWidth,-nHeight,NULL);
    if ( pPicture ) pPicture->Release();// 释放 IPicture 指针
    if ( pStream ) pStream->Release();  // 释放 IStream 指针,同时释放了 hMem

    ::CoUninitialize();
    }这个可以显示JPG图片,用的时候将它写成一个函数,其中pDC是你想显示的图片窗体的DC指针.