mfc在图片上画矩形框
时间: 2023-05-29 16:03:06 浏览: 408
以下是使用MFC在图片上绘制矩形框的示例代码:
1. 首先,您需要在您的MFC应用程序中添加一个控件,用于显示图像。例如,您可以添加一个名为m_picCtrl的静态图片控件。
2. 在您的应用程序的头文件中,添加以下代码:
```c++
CRect m_rect; //用于存储矩形框的坐标
BOOL m_bDrawRect; //标记是否绘制矩形框
```
3. 在您的应用程序的OnInitDialog()函数中,添加以下代码:
```c++
m_bDrawRect = FALSE;
```
4. 添加一个OnLButtonDown()函数,用于在单击鼠标时开始绘制矩形框:
```c++
void CMyAppDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
m_rect.left = point.x;
m_rect.top = point.y;
m_bDrawRect = TRUE;
CDialogEx::OnLButtonDown(nFlags, point);
}
```
5. 添加一个OnMouseMove()函数,用于在鼠标移动时绘制矩形框:
```c++
void CMyAppDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_bDrawRect)
{
CClientDC dc(this);
dc.CreateCompatibleDC(NULL);
CBitmap bmp;
bmp.CreateCompatibleBitmap(&dc, m_picCtrl.GetClientRect().Width(), m_picCtrl.GetClientRect().Height());
dc.SelectObject(&bmp);
dc.BitBlt(0, 0, m_picCtrl.GetClientRect().Width(), m_picCtrl.GetClientRect().Height(), &dc, 0, 0, SRCCOPY);
dc.Rectangle(m_rect);
m_rect.right = point.x;
m_rect.bottom = point.y;
dc.Rectangle(m_rect);
}
CDialogEx::OnMouseMove(nFlags, point);
}
```
6. 添加一个OnLButtonUp()函数,用于在释放鼠标时停止绘制矩形框:
```c++
void CMyAppDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bDrawRect = FALSE;
CDialogEx::OnLButtonUp(nFlags, point);
}
```
7. 最后,在您的应用程序中添加一个按钮或菜单项,用户可以单击该按钮或菜单项来保存带有矩形框的图像。在按钮或菜单项的单击处理程序中,添加以下代码:
```c++
CClientDC dc(this);
dc.CreateCompatibleDC(NULL);
CBitmap bmp;
bmp.CreateCompatibleBitmap(&dc, m_picCtrl.GetClientRect().Width(), m_picCtrl.GetClientRect().Height());
dc.SelectObject(&bmp);
dc.BitBlt(0, 0, m_picCtrl.GetClientRect().Width(), m_picCtrl.GetClientRect().Height(), &dc, 0, 0, SRCCOPY);
dc.Rectangle(m_rect);
bmp.Save(_T("image.bmp"), Gdiplus::ImageFormatBMP);
```
这将在保存图像之前将矩形框绘制到图像上,并将图像保存为BMP格式。您可以根据需要更改文件格式。
阅读全文