如何利用ipicture render在指定图像框内显示相同大小的jpg图片
风之刃3 2014-04-24 09:35:22 CString m_filename =strContentpicture;
m_dir.SetWindowText(m_filename);
CFile m_file(m_filename,CFile::modeRead );
DWORD m_filelen = m_file.GetLength(); //获取文件长度
HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE,m_filelen); //在堆上分配指定大小空间
LPVOID pvdata = NULL; //锁定堆空间,获取指向堆空间的指针
pvdata = GlobalLock(m_hglobal);//将文件数据读区到堆中
m_file.ReadHuge(pvdata,m_filelen);
IStream* m_stream;
GlobalUnlock(m_hglobal);
CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream);//在堆中创建流对象
OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture); //利用流加载图像
m_picture->get_Width(&m_width);
m_picture->get_Height(&m_height);
CDC* dc = GetDC();
m_IsShow = TRUE;
CRect rect;
GetClientRect(rect);
SetScrollRange(SB_VERT,0,(int)(m_height/26.45)-rect.Height());
SetScrollRange(SB_HORZ,0,(int)(m_width/26.45)-rect.Width());
CRect lpRec;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&lpRec);
//ScreenToClient(&lpRec);
m_picture->Render(*dc,50,50,lpRec.Width(),lpRec.Height(),0,m_height,m_width,-m_height,NULL);
ReleaseDC(dc);
//这样只能把图片显示的和图像框一样大,强行规定了显示位置的左上角坐标,但是,一旦拖动对话框到屏幕外,对话框上的图 //片就会刷新,而且是原图像大小,怎么才能在图像框内刷新这张图啊??