写出MFC图像缩放及绘制矩形框代码
时间: 2024-10-16 21:08:37 浏览: 15
在MFC中,你可以使用CBitmap、CDC类以及相关的函数来实现图像的缩放和矩形框的绘制。以下是一个简单的示例,展示如何在一个窗口上缩放加载的位图并绘制一个矩形框:
```cpp
// CMyView类的成员函数
void CMyView::OnPaint() // 每次窗口需要重绘时都会调用这个函数
{
CDC dc(this); // 获取当前设备上下文
CRect rectClient; // 获取客户区大小
GetClientRect(rectClient);
// 创建位图对象,准备缩放
HBITMAP hOldBitmap = (HBITMAP)dc.SelectObject(_T("your_image.bmp")); // 替换为你的图片路径
CBitmap bitmap;
if (hOldBitmap != NULL)
{
bitmap.Attach(hOldBitmap);
dc.StretchBlt(rectClient, &bitmap, NULL, bitmap.GetWidth(), bitmap.GetHeight(), SRCCOPY); // 缩放并复制图像
bitmap.Detach();
}
// 绘制矩形框
CPen penRed(CRGB(255, 0, 0), 2, PS_SOLID); // 创建红色实线笔
dc.SetPen(&penRed);
CRect rectBox(50, 50, 150, 150); // 定义矩形框位置和尺寸
dc.Rectangle(rectBox); // 绘制矩形
// 清理资源
dc.SelectObject(NULL); // 还原DC到原来的设备描述符
}
// 另外,在适当的地方调用InvalidateRect(&rectClient, NULL, TRUE) 来触发OnPaint方法的重新绘制
```
注意这只是一个基本示例,实际应用中你可能需要添加更多的错误检查和用户体验优化。同时,记得处理图像加载失败等情况。
阅读全文