一、读取CImage
//在绘图函数中直接使用参数pDC,无需定义
CDC* pDC = GetDC();
//读去位图路径,根据实际情况修改
CString loatImagePath = TEXT("./res/drawing.png");
CRect imageRect;
CImage image;
//根据路径载入图片
HRESULT hresult = image.Load(loatImagePath);
//图片不存在,结束读取
if(E_FAIL==hresult)
{
//MessageBox(_T(" Image Load failed!"));
return;
}
//设置矩形框大小
imageRect.SetRect(0,0 ,image.GetWidth() , image.GetHeight());
// 只能为英文路径,否则报错。
//将图片画到Picture控件表示的矩形区域
image.Draw(pDC->m_hDC, imageRect);
二、保存文件绘制显示内容
//将存取this指向的CWnd的客户区
CClientDC dc(this);
CRect rect;
//获取工作区大小(画布)
GetClientRect(&rect);
//创建兼容位图
HBITMAP hBitmap = CreateCompatibleBitmap(*dc, rect.Width(), rect.Height());
//创建兼容DC 产生与dc指定设备兼容的设备上下文内存
HDC hdc = CreateCompatibleDC(*dc);
//将位图选入DC,并保存返回值
HBITMAP hOldMap = (HBITMAP)SelectObject(hdc,hBitmap);
//将屏幕DC(dc)的图像复制到内存DC(hdc)中
BitBlt(hdc,0,0,rect.Width(),rect.Height(),*dc,0,0,SRCCOPY);
CImage image;
//将位图转化为一般图像 将hBitmap附加到对象image
image.Attach(hBitmap);
//保存图像,返回执行状况
HRESULT hResult = image.Save(saveImagePath);
//从CImage对象分离位图。
image.Detach();
//复原兼容DC数据
SelectObject(hdc,hOldMap);
//释放设备上下文环境(DC)
ReleaseDC(&dc);