前言
有时候用pictrue控件显示图片的时候,如果设置图片大小适应控件大小可能不是很合理,但如果不设置,控件可能会便宜你摆放的原位置,这时候需要动态设置图形控件位置
正文
void CDlog4::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CPropertyPage::OnPaint()
/*****************将图片缩放在图形控件内***********************/
//CImage image;
//int cx, cy;
//CRect rect;
根据路径载入图片
char strPicPath[]="D://p12.png";
//image.Load(_T("res\\tt1.gif"));
获取图片的宽 高
//cx = image.GetWidth();
//cy = image.GetHeight();
//CWnd *pWnd = NULL;
//pWnd= GetDlgItem(IDC_LJL_GIF);//获取控件句柄
获取Picture Control控件的客户区
//pWnd->GetClientRect(&rect);
//CDC *pDc = NULL;
//pDc = pWnd->GetDC();//获取picture control的DC
设置指定设备环境中的位图拉伸模式
//int ModeOld=SetStretchBltMode(pDc->m_hDC,STRETCH_HALFTONE);
从源矩形中复制一个位图到目标矩形,按目标设备设置的模式进行图像的拉伸或压缩
//image.StretchBlt(pDc->m_hDC,rect,SRCCOPY);
//SetStretchBltMode(pDc->m_hDC,ModeOld);
//ReleaseDC(pDc);
/*****************将图片缩放在图形控件内***********************/
//获取控件大小
CRect rc;
CWnd *pWnd = GetDlgItem(IDC_LJL_GIF);//参数为控件ID
pWnd->GetClientRect(&rc);//rc为控件的大小。
int py = rc.Height();
int px = rc.Width();
//获取窗口大小
CRect _GetGroup;
this->GetClientRect(_GetGroup);
int y = _GetGroup.Height();
int x = _GetGroup.Width();
//设置控件位置
pWnd->MoveWindow(x/2-px/2,y/2-py/2,px,py);
}
两种方法代码如上,注释掉的是让图片适应控件,下面那种是动态改变控件位置,我做的是始终让控件位于正中间