dialog中放一picture控件,给定图片路径,如何按指定大小将图片显示于picture中,谢谢!

解决方案 »

  1.   

    用函数:CDC::StretchBlt
    BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );
      

  2.   

    CPicture m_picture;
    CDC dc=m_picture.getDC();
    BITMAP bmp;
    HBITMAP  m_hDisplay= (HBITMAP)LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);
    GetObject(m_hDisplay,sizeof(bmp),&bmp);
    CDC MemDC;
    MemDC.CreateCompatibleDC(NULL);
    HBITMAP hold=(HBITMAP)MemDC.SelectObject(m_hDisplay);
    dc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&MemDC,0,0,SRCCOPY);
    MemDC.SelectObject(hold);
    DeleteDC(MemDC);
    DeleteDC(dc);
      

  3.   

    IStream *pStm; 
    CFileStatus fstatus; 
    CFile file; 
    LONG cb; 
    CRect r_Show;
    HDC hdc;

    m_Show.GetClientRect(r_Show);
    int xpos=r_Show.left;
    int ypos=r_Show.top;
    int Widthpos=r_Show.Width();
    int heightpos=r_Show.Height(); 
    if (file.Open(m_PhotoPath,CFile::modeRead)&&file.GetStatus(m_PhotoPath,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->GetDeviceCaps(HORZSIZE)*100.0); 
    // fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0); 
    // if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL))) 
    double fX,fY; 
    fX = r_Show.Width();//图片大小
    fY = r_Show.Height();
    hdc=::GetDC(m_Show.m_hWnd); 
    if(FAILED(pPic->Render(hdc,xpos,ypos,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL))) 
    AfxMessageBox("Failed To Render The picture!"); 
    // pPic->Release(); 

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


    GlobalFree(hGlobal);

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

  4.   

    CStatic m_Picture ;
    CString FileName ="D:\\picture\\__allph.bmp";
    HBITMAP  m_hDisplay= (HBITMAP)LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    m_Picture.SetBitmap(m_hDisplay);
      

  5.   

    CStatic m_Picture ;
    CString FileName ="D:\\picture\\__allph.bmp";
    HBITMAP  m_hDisplay= (HBITMAP)LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    m_Picture.SetBitmap(m_hDisplay);
      

  6.   

    CStatic m_Picture ;
    CString FileName ="D:\\picture\\__allph.bmp";
    HBITMAP  m_hDisplay= (HBITMAP)LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    m_Picture.SetBitmap(m_hDisplay);
      

  7.   

    将pic对象设一个ID号
    再用
    GetDlgItem( IDC_PICTURE_1 )->MoveWindow( CRect( ...) );
    不行吗?
      

  8.   

    将pic对象设一个ID号
    再用
    GetDlgItem( IDC_PICTURE_1 )->MoveWindow( CRect( ...) );
    不行吗?
      

  9.   

    将pic对象设一个ID号
    再用
    GetDlgItem( IDC_PICTURE_1 )->MoveWindow( CRect( ...) );
    不行吗?