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);