各位大大安啊
我想问一下如何把拷屏后的图片存为.jpg或者.bmp
我在网上查了一下 拷屏代码和打开文件框可以写成下面这样
我想问一下具体的保存为BMP和JPG格式的代码要怎么写啊 //-------------------------------------------------------拷屏代码
CDC MemDc;// 屏幕和内存设备描述表
CClientDC ScrDc(this);
CBitmap ScrBmp;
CRect rect;
GetClientRect(&rect);
MemDc.CreateCompatibleDC(&ScrDc);
ScrBmp.CreateCompatibleBitmap(&ScrDc,rect.Width(), rect.Height());
//屏幕分辨率为800x600
CBitmap* pOld=MemDc.SelectObject(&ScrBmp);
MemDc.BitBlt(0,0,rect.Width(), rect.Height(),&ScrDc,0,0,SRCCOPY);//拷屏
MemDc.SelectObject(pOld);
//输出到剪贴板
OpenClipboard();
EmptyClipboard();
SetClipboardData(CF_BITMAP, ScrBmp.GetSafeHandle());
//关闭剪贴板
CloseClipboard();
//------------------------------------------------------------------------调用保存文件框
CString strExt = ".jpg"; // 扩展名
CString strFilePath;
CString strFilter;
strFilter.Format("图像文件 (*jpg)|*jpg|All Files (*.*)|*.*||");
CFileDialog dlg(FALSE, NULL, "", NULL, strFilter);
if(dlg.DoModal()==IDOK)
{
strFilePath = dlg.GetPathName();
if (strFilePath.Find(strExt) == -1)
{
strFilePath += strExt;
}
if ( access(strFilePath, 0) == 0 )
{
CString strQuery;
strQuery.Format("%s 已经存在,要替换它吗?", strFilePath);
if ( IDNO == ::MessageBox(m_hWnd, strQuery, "文件覆盖询问", MB_ICONQUESTION | MB_YESNO) )
{
return;
}
}
FILE *fp = fopen(strFilePath, "wt+");
我想问一下如何把拷屏后的图片存为.jpg或者.bmp
我在网上查了一下 拷屏代码和打开文件框可以写成下面这样
我想问一下具体的保存为BMP和JPG格式的代码要怎么写啊 //-------------------------------------------------------拷屏代码
CDC MemDc;// 屏幕和内存设备描述表
CClientDC ScrDc(this);
CBitmap ScrBmp;
CRect rect;
GetClientRect(&rect);
MemDc.CreateCompatibleDC(&ScrDc);
ScrBmp.CreateCompatibleBitmap(&ScrDc,rect.Width(), rect.Height());
//屏幕分辨率为800x600
CBitmap* pOld=MemDc.SelectObject(&ScrBmp);
MemDc.BitBlt(0,0,rect.Width(), rect.Height(),&ScrDc,0,0,SRCCOPY);//拷屏
MemDc.SelectObject(pOld);
//输出到剪贴板
OpenClipboard();
EmptyClipboard();
SetClipboardData(CF_BITMAP, ScrBmp.GetSafeHandle());
//关闭剪贴板
CloseClipboard();
//------------------------------------------------------------------------调用保存文件框
CString strExt = ".jpg"; // 扩展名
CString strFilePath;
CString strFilter;
strFilter.Format("图像文件 (*jpg)|*jpg|All Files (*.*)|*.*||");
CFileDialog dlg(FALSE, NULL, "", NULL, strFilter);
if(dlg.DoModal()==IDOK)
{
strFilePath = dlg.GetPathName();
if (strFilePath.Find(strExt) == -1)
{
strFilePath += strExt;
}
if ( access(strFilePath, 0) == 0 )
{
CString strQuery;
strQuery.Format("%s 已经存在,要替换它吗?", strFilePath);
if ( IDNO == ::MessageBox(m_hWnd, strQuery, "文件覆盖询问", MB_ICONQUESTION | MB_YESNO) )
{
return;
}
}
FILE *fp = fopen(strFilePath, "wt+");
CClientDC ScrDc(this);
CBitmap ScrBmp;
CRect rect;
GetClientRect(&rect);
MemDc.CreateCompatibleDC(&ScrDc);
ScrBmp.CreateCompatibleBitmap(&ScrDc,rect.Width(), rect.Height());
//屏幕分辨率为800x600
CBitmap* pOld=MemDc.SelectObject(&ScrBmp);
MemDc.BitBlt(0,0,rect.Width(), rect.Height(),&ScrDc,0,0,SRCCOPY);//拷屏
MemDc.SelectObject(pOld);
ATL::CImage img;
img.Attach((HBITMAP)ScrBmp);
img.Save(_T("C:\\111.bmp"));
img.Detach();
CImage imgOriginal;
// imgOriginal.Attach(*TempBitmap2);//TempBitmap2这个是要保存的位图指针
//CString strFilter;
//CSimpleArray<GUID> aguidFileTypes;
//TRACE("12");
//HRESULT hResult; //strFilter = "Bitmap image|*.bmp|JPEG image|*.jpg|GIF image|*.gif|PNG image|*.png||";
//int m_nFilterLoad = 0;
//TRACE("13");
//CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER,strFilter);
//TRACE("14");
//dlg.m_ofn.nFilterIndex = m_nFilterLoad;
//hResult = (int)dlg.DoModal();
//if (FAILED(hResult)) {
// return false;
//} //// Add the appropriate extension if the user didn't type one //CString strFileName;
//CString strExtension;
//strFileName = dlg.m_ofn.lpstrFile; //// add the file extension if the user didn't supply one
//if (dlg.m_ofn.nFileExtension == 0)
//{
// switch (dlg.m_ofn.nFilterIndex)
// {
// 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; //} //// the extension on the file name will determine the file type that is saved
//hResult = imgOriginal.Save(strFileName);
//if (FAILED(hResult)) {
// CString fmt;
// fmt.Format("Save image failed:\n%x - %s", hResult, _com_error(hResult).ErrorMessage());
// ::AfxMessageBox(fmt);
// return false;
//}