2024年4月19日发(作者:)
如何将MFC图片框中画的图形用CImage保存成多种格式:
将下列代码拷到你想执行的命令函数中(比如按钮函数或者菜单函数)即可
其中IDC_STATIC2这个就是你想保存的控件ID
//改变Hwnd即可以得到不同控件的句柄
//整个对话框中 每个元素都是一个窗体!
HWND hwnd = GetDlgItem(IDC_STATIC2)->GetSafeHwnd();
HDC hDC = ::GetWindowDC(hwnd);//获取DC
RECT rect;
::GetWindowRect(hwnd, &rect);//获取屏幕大小
HDC hDCMem = ::CreateCompatibleDC(hDC);//创建兼容DC
HBITMAP hBitMap = ::CreateCompatibleBitmap(hDC, ,
);//创建兼容位图
HBITMAP hOldMap = (HBITMAP)::SelectObject(hDCMem, hBitMap);//将位图选
入DC,并保存返回值
::BitBlt(hDCMem, 0, 0, , , hDC, 0, 0,
SRCCOPY);//将屏幕DC的图象复制到内存DC中
CImage image;//需要#include
(hBitMap);
//(_T("c:"));//如果文件后缀为.bmp,则保存为为bmp格式
//以下程序用于选择图片保存路径等信息
CString strFilter="位图文件(*.bmp)|*.bmp|JPEG 图像文件|*.jpg|GIF 图像文件
|*.gif|PNG 图像文件|*.png||";
CFileDialog dlg(FALSE,"bmp","",NULL,strFilter);
if ( IDOK != l())
return;
// 如果用户没有指定文件扩展名,则为其添加一个
CString strFileName;
CString strExtension;
strFileName = dlg.m_ile;
if (dlg.m_xtension == 0)
{
switch (dlg.m_rIndex)
{
case 1:
strExtension = "bmp"; break;
case 2:
strExtension = "jpg"; break;
case 3:
strExtension = "gif"; break;
case 4:
strExtension = "png"; break;
default:
break;
}
strFileName = strFileName + '.' + strExtension;
}
// 图像保存
HRESULT hResult = (strFileName);
if (FAILED(hResult))
MessageBox("保存图像文件失败!");
else
MessageBox("保存图像文件成功!");
();
::SelectObject(hDCMem, hOldMap);//选入上次的返回值
//释放
::DeleteObject(hBitMap);
::DeleteDC(hDCMem);
::DeleteDC(hDC);


发布评论