保存为文件时,有时在图形上会有一个对话框(就是保存文件的这个对话框)。除了那个::BitBlt();外,还有没有什么其他的方法把Picture Control中的图形写入到那个CImage中?下面是代码:
CString strFilter;
strFilter =_T("位图文件(.bmp)|*.bmp|JPEG图像文件(.jpg)|*.jpg|GIF图像文件(.gif)|*.gif|PNG图像文件(.png)|*.png||");
CFileDialog fileDlg(FALSE,NULL,NULL,NULL,strFilter);
fileDlg.m_ofn.lpstrTitle=_T("保存图像"); if(fileDlg.DoModal()!=IDOK)
return; CString strFileName;
CString strExtension;
strFileName = fileDlg.m_ofn.lpstrFile;
if (fileDlg.m_ofn.nFileExtension == 0)
{
switch(fileDlg.m_ofn.nFilterIndex)
{
case 1:
strExtension=_T("bmp");
break;
case 2:
strExtension=_T("jpg");
break;
case 3:
strExtension=_T("gif");
break;
case 4:
strExtension=_T("png");
break;
default:
break;
}
strFileName = strFileName+_T(".")+strExtension;
} CWnd* pWnd = GetDlgItem(IDC_PICSHOW); //控件ID
pWnd->GetWindowRect(&WaveRect);
ScreenToClient(&WaveRect);
CDC *pDC = pWnd->GetDC();
CImage imag;
imag.Create(WaveRect.Width(),WaveRect.Height(),32);
::BitBlt(imag.GetDC(),0,0,WaveRect.Width(),WaveRect.Height(),pDC->m_hDC,0,0,SRCERASE);
HRESULT hResult = imag.Save(strFileName);
if (FAILED(hResult))
{
MessageBox(_T("保存图像文件失败!"));
} ReleaseDC(pDC);
imag.ReleaseDC();
CString strFilter;
strFilter =_T("位图文件(.bmp)|*.bmp|JPEG图像文件(.jpg)|*.jpg|GIF图像文件(.gif)|*.gif|PNG图像文件(.png)|*.png||");
CFileDialog fileDlg(FALSE,NULL,NULL,NULL,strFilter);
fileDlg.m_ofn.lpstrTitle=_T("保存图像"); if(fileDlg.DoModal()!=IDOK)
return; CString strFileName;
CString strExtension;
strFileName = fileDlg.m_ofn.lpstrFile;
if (fileDlg.m_ofn.nFileExtension == 0)
{
switch(fileDlg.m_ofn.nFilterIndex)
{
case 1:
strExtension=_T("bmp");
break;
case 2:
strExtension=_T("jpg");
break;
case 3:
strExtension=_T("gif");
break;
case 4:
strExtension=_T("png");
break;
default:
break;
}
strFileName = strFileName+_T(".")+strExtension;
} CWnd* pWnd = GetDlgItem(IDC_PICSHOW); //控件ID
pWnd->GetWindowRect(&WaveRect);
ScreenToClient(&WaveRect);
CDC *pDC = pWnd->GetDC();
CImage imag;
imag.Create(WaveRect.Width(),WaveRect.Height(),32);
::BitBlt(imag.GetDC(),0,0,WaveRect.Width(),WaveRect.Height(),pDC->m_hDC,0,0,SRCERASE);
HRESULT hResult = imag.Save(strFileName);
if (FAILED(hResult))
{
MessageBox(_T("保存图像文件失败!"));
} ReleaseDC(pDC);
imag.ReleaseDC();
http://topic.csdn.net/u/20070907/11/859b4d7e-58b7-47f3-99f9-575efcdc07a8.html