bool CFlapContrlDlg::Show_picture(CString imgPath) { int height, width; CRect rect;//定义矩形类 CRect rect1; CImage image; //创建图片类 image.Load(imgPath); height = image.GetHeight(); width = image.GetWidth(); m_PictureControl.GetClientRect(&rect); //获得pictrue控件所在的矩形区域 CDC *pDc = m_PictureControl.GetDC();//获得pictrue控件的Dc SetStretchBltMode(pDc->m_hDC,STRETCH_HALFTONE); if(width<=rect.Width() && height<=rect.Width()) //小图片,不缩放 { rect1 = CRect(rect.TopLeft(), CSize(width,height)); image.StretchBlt(pDc->m_hDC,rect1,SRCCOPY); //将图片画到Picture控件表示的矩形区域 return TRUE; } else { float xScale=(float)rect.Width()/(float)width; float yScale=(float)rect.Height()/(float)height; float ScaleIndex=(xScale>=yScale:xScale,yScale); rect1 = CRect(rect.TopLeft(), CSize((int)width*ScaleIndex,(int)height*ScaleIndex)); image.StretchBlt(pDc->m_hDC,rect1,SRCCOPY); //将图片画到Picture控件表示的矩形区域 } ReleaseDC(pDc);//释放picture控件的Dc return TRUE; |
MFC picture control控件不失真自适应图片显示
最新推荐文章于 2020-11-26 23:45:56 发布