MFC的图片控件的使用(图片适应控件大小并不失真)

原创 2015年11月18日 15:34:20

MFC的图片控件的使用



建立一个基于对话框的MFC  如图 ,为新建MFC的窗口 接下来添加图片控件(如果添加全部背景则不需要添加图片控件,直接进行消息响应函数的添加即可)

     
添加图片控件


接下来 点击属性更改控件名称




在属性中 找到ID进行更改



可更改为IDC_XXXX,接下来添加paint消息函数,右键窗口空白部分点击属性  点击消息找到WM_PAINT




在后面点击添加代码:

进入到代码的编辑页面:


在OnPaint函数中添加代码,如果在函数中有if的条件语句,在else中添加:


添加的代码如下
CImage *m_sLogInPic;//新建一个CImage的对象 用于储存图片
m_sLogInPic = new CImage;
m_sLogInPic->Load("1.jpg");//使用m_sLogInPic读取图片引号中添加图片地址及图片名
CPaintDC dc(this); // 建立一个矩形在矩形中画图
CRect rect;
GetDlgItem(IDC_2)->GetWindowRect(&rect);//规定矩形为你所创建的图片控件(括号内为控件ID)若是为整个窗口添加背景将矩形设为整个窗口即可
ScreenToClient(&rect);
dc.SetStretchBltMode(HALFTONE);
m_sLogInPic->Draw(dc.m_hDC, rect);//通过画图 将图片paint出来 
CDialogEx::OnPaint();
运行即可看到添加的图片控件里出现想要的图片了
 
附:获取对话框窗体大小及其屏幕坐标
//对话框窗体大小及其屏幕坐标
CRect rectDlg;
//法1:
GetClientRect(rectDlg);//获得窗体的大小
//法2:
//GetWindowRect(rectDlg);//获得窗体在屏幕上的位置
//ScreenToClient(rectDlg);
CString strDlg;
strDlg.Format(L"%d,%d,%d,%d",rectDlg.left,rectDlg.top,rectDlg.Width(),rectDlg.Height());
MessageBox(strDlg);

关于窗口:

1、获取屏幕分辨率

//下边两个函数获取的是显示屏幕的大小,但不包括任务栏等区域
int cx = GetSystemMetrics(SM_CXFULLSCREEN);
int cy = GetSystemMetrics(SM_CYFULLSCREEN);
//下边这两个函数获取的是真正屏幕的大小:屏幕分辨率
int nWidth=GetSystemMetrics(SM_CXSCREEN);  //屏幕宽度    
int nHeight=GetSystemMetrics(SM_CYSCREEN); //屏幕高度
CString strScreen;
strScreen.Format(L"%d,%d",nWidth,nHeight);
MessageBox(strScreen);

2、获取对话框窗体大小及其屏幕坐标

//对话框窗体大小及其屏幕坐标
CRect rectDlg;
//法1:
GetClientRect(rectDlg);//获得窗体的大小
//法2:
//GetWindowRect(rectDlg);//获得窗体在屏幕上的位置
//ScreenToClient(rectDlg);
CString strDlg;
strDlg.Format(L"%d,%d,%d,%d",rectDlg.left,rectDlg.top,rectDlg.Width(),rectDlg.Height());
MessageBox(strDlg);

3、获取控件大小和位置

//控件大小和位置
CRect rectCtrl;
CStatic *p=(CStatic*)GetDlgItem(IDC_STATIC_TEST);
p->MoveWindow(100,100,100,100);//更改控件大小并移动其到指定位置
p->GetWindowRect(rectCtrl);
this->ScreenToClient(rectCtrl);
//GetDlgItem(IDC_STATIC_TEST)->GetClientRect(rectCtrl);
CString str;
str.Format(L"%d,%d,%d,%d",rectCtrl.left,rectCtrl.top,rectCtrl.Width(),rectCtrl.Height());
MessageBox(str);

总结:

1、GetSystemMetrics()  -->   用于得到被定义的系统数据或者系统配置信息;

2、GetClientRect() -->  得到客户区的位置和大小,一般用于获取窗口大小;

3、GetWindowRect() -->  得到窗口(对话框或控件)的屏幕坐标,一般用于获取对话框的屏幕坐标或和ScreenToClient()配合使用获取控件的客户区坐标;

4、ScreenToClient()  -->  屏幕坐标转换为客户区坐标,一般和GetWindowRect()配合使用获取控件的客户区坐标;









MFC Picture Control 自适应控件大小显示图片,失真和不失真

StretchBlt和BitBlt都用在双缓冲视图中,用来显示一幅图像 一、StretchBlt 函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩。也即...
  • u010525856
  • u010525856
  • 2017年06月02日 12:51
  • 781

MFC中picture控件,将bitmap根据控件大小缩放

直接在OnInitDialog()函数中添加即可; CRect rc; m_ctrlPic.GetClientRect(&rc); CDC* pdcpic = m_ctrlPic.GetDC();...
  • lker329
  • lker329
  • 2017年02月07日 16:50
  • 2968

MFC位图自适应Picture Control控件大小

试了n个方法,查了n多资料。终于弄出来了~~~~ void CTestDlg::AddPitcure() { CBitmap bitmap; //加载指定位图资源 Bmp图片ID ...
  • chen_JADE
  • chen_JADE
  • 2017年06月29日 17:30
  • 619

MFC怎么让图片适应picture control控件的大小

UpdateWindow(); int height, width; CRect rect;//定义矩形类 CRect rect1; CImage image; //创建图片类 image....
  • zhangqinli
  • zhangqinli
  • 2014年10月11日 13:01
  • 23005

MFC界面Picture Control自适应不失真显示图片

//可选择从工程目录中获取图片路径(用到枚举函数EnumFiles)         char acFilePath1[MAX_PATH] = {0}; GetModuleFileName(NUL...
  • yyangzhenjie
  • yyangzhenjie
  • 2017年05月26日 14:29
  • 750

VS2010-MFC:MFC PictureControl控件上自适应显示图片,分图片失真或者图片不失真两种

MFC PictureControl控件上自适应显示图片,分图片失真或者图片不失真两种 ShowPicture(CString Filepath) { /*----根据图片文件路径显示图片-...
  • HW140701
  • HW140701
  • 2017年04月15日 10:25
  • 2355

android如何设置图片自适应控件大小

注意: 1.设置图片的时候不要使用src引用资源,否则无法自适应屏幕, 2.要通过设置ba...
  • beibaokongming
  • beibaokongming
  • 2016年03月09日 14:50
  • 898

C++ 图片自适应 picture control 控件大小 不失真显示

原文地址:http://blog.sina.com.cn/s/blog_69b5d2a50101a7qf.html bool CFlapContrlDlg::Show_picture(CStri...
  • NRlovestudy
  • NRlovestudy
  • 2015年08月28日 14:57
  • 1384

利用MFC的Picture控件归一大小显示图像

句柄名设置为 OnBnClickedReadimg,主要的响应操作包括 弹出对话框选择图片文件、读入图片文件、对图片统一缩放至256*256的大小、显示图像,代码如下: // TODO: A...
  • sunrong0511
  • sunrong0511
  • 2016年07月28日 10:49
  • 1303

MFC中Picture控件,将位图转换成任意大小再放入控件中

CRect r(0, 0, 820, 150); CDC* pdcpic = m_firstPicture.GetDC(); //m_firstPicture是Picture控件的变量 CBi...
  • sikong00
  • sikong00
  • 2016年07月23日 18:00
  • 978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC的图片控件的使用(图片适应控件大小并不失真)
举报原因:
原因补充:

(最多只允许输入30个字)