li00020 发表于 2014-11-15 15:52:26

MFC picture control控件不失真自适应图片显示

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;
页: [1]
查看完整版本: MFC picture control控件不失真自适应图片显示