MFC 以图像大小打开并显示图像,鼠标左击显示像素坐标
2017-07-10 15:54
369 查看
一、创建MFC对话框,类名CDialogDlg,添加按钮IDC_BUTTON1,OnBnClickedButton1()函数如下:
添加两个编辑框IDC_EDIT1、IDC_EDIT2。
二、资源视图里添加一个DIALOG对话框并为其添加一个类,类名为CShow。
添加一个PICTURE控件IDC_SHOWPIC。
在Show.h内添加public成员:
重写OnInitDialog()函数,如下:
添加WM_PAINT消息,OnPaint()函数如下:
添加WM_LBUTTONDOWN消息,OnLButtonDown(UINT nFlags, CPoint point)函数如下:
CShow *dlg; dlg = new CShow; dlg->Create(IDD_SHOW_DLG); //创建非模态对话框 dlg->ShowWindow(SW_SHOW); //显示对话框
添加两个编辑框IDC_EDIT1、IDC_EDIT2。
二、资源视图里添加一个DIALOG对话框并为其添加一个类,类名为CShow。
添加一个PICTURE控件IDC_SHOWPIC。
在Show.h内添加public成员:
CImage image;
重写OnInitDialog()函数,如下:
// TODO: 在此添加额外的初始化 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, _T("Image files(*.png; *.jpg)|*.png;*.jpg|All files(*.*)|*.*||"), NULL); dlg.m_ofn.lpstrTitle = _T("Open Image"); if( dlg.DoModal() != IDOK ) return FALSE; CString Filepath = dlg.GetPathName();//打开并选择图像,获得选择图像的路径 image.Load(Filepath);//加载图片 CRect rect1(0,0,image.GetWidth(),image.GetHeight()); CRect rect2,rect3; this->GetWindowRect(&rect2); ScreenToClient(&rect2); this->GetClientRect(&rect3); rect1.left=rect2.left-rect3.left; rect1.top=rect2.top-rect3.top; rect1.right=rect2.right-rect3.right+rect1.right; rect1.bottom=rect2.bottom-rect3.bottom+rect1.bottom;//获得非客户区的大小 //设置窗口大小(非客户区大小加上图像大小)和位置 SetWindowPos(NULL,0,0,rect1.Width(),rect1.Height(),SWP_NOZORDER|SWP_NOMOVE); CenterWindow();//窗口居中 GetDlgItem(IDC_SHOWPIC)->MoveWindow(0,0,image.GetWidth(),image.GetHeight());//以图像大小设置picture控件大小
添加WM_PAINT消息,OnPaint()函数如下:
CRect rect2; GetDlgItem(IDC_SHOWPIC)->GetClientRect(&rect2);//获得picture控件的位置信息 CDC *pDc = GetDlgItem(IDC_SHOWPIC)->GetDC();//获得pictrue控件的Dc image.Draw(pDc->m_hDC,rect2);//把image画到picture控件上 ReleaseDC(pDc);//释放Dc
添加WM_LBUTTONDOWN消息,OnLButtonDown(UINT nFlags, CPoint point)函数如下:
CRect rect; GetDlgItem(IDC_SHOWPIC)->GetClientRect(rect);//获取Picture控件的位置信息,存入rect中 if (rect.PtInRect(point))//判断point是否在rect内部 { CDialogDlg *parent = (CDialogDlg*)GetParent();//获得父窗口指针 parent->SetDlgItemInt(IDC_EDIT1,point.x); parent->SetDlgItemInt(IDC_EDIT2,point.y);//在编辑框显示鼠标位置信息 }
相关文章推荐
- MFC中用OpenCV显示图像,并跟踪鼠标显示图像的坐标与像素
- 利用OpenCV鼠标事件设置函数setMouseCallback显示图像像素坐标值!
- Halcon MFC混合编程-图像显示随鼠标滚动放大缩小
- mfc从磁盘中打开图像文件并显示在图像控件中
- 在使用Ribbon的MFC程序状态栏中显示鼠标坐标值
- MFC Static上显示JPG图像,如何使图像大小自适应Static边框
- Halcon MFC混合编程-图像显示随鼠标滚动放大缩小
- 窗体中有一个图片框,显示一副图片。要求:1)在窗体打开时,动态加载图片;2)设置图片显示模式为根据图片框大小缩放图片;3)图片自己找;4)当鼠标停留在图片框时,显示“**风光”提
- MFC:在状态栏最左边显示鼠标当前的坐标
- MFC 显示对话框内鼠标单击点的坐标值
- Halcon MFC混合编程-图像显示随鼠标滚动放大缩小
- MFC中状态栏显示鼠标坐标位置
- MFC中显示像素值保存在二维数组中的BMP图像
- opencv学习-MFC打开摄像头显示图像
- opencv--用鼠标动态改变显示图像窗口大小
- 在使用Ribbon的MFC程序状态栏中显示鼠标坐标值
- MFC 在状态栏显示当前鼠标坐标
- 数字图像处理MFC程序设计之图像的打开显示
- OPENCV系列(一) 读取图像中任意点的像素值,并显示坐标
- 在MFC中显示OpenCV的Mat格式图像和打开摄像头