以图片的形式存储单文档中的内容
2013-08-23 14:49
169 查看
存储指定的控件大小
/*以图片的形式存储*/
void CChartView::OnButtonSavep()
{
// TODO: Add your control notification handler code here
CClientDC SHDC(this);//取得客户区内存DC
CPaintDC dc(this);
CDC memDC;
CRect rect;
CWnd *pWnd = GetDlgItem(IDC_STATIC_CSHOW);/*指定控件*/
pWnd->GetClientRect(&rect);//rect为控件的大小。
memDC.CreateCompatibleDC(&SHDC);
CBitmap bm;
int Width = rect.Width();//
int Height = rect.Height();//
bm.CreateCompatibleBitmap(&SHDC, Width, Height);
CBitmap* pOld = memDC.SelectObject(&bm);
memDC.BitBlt(0, 0, Width, Height, &SHDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size = btm.bmWidthBytes * btm.bmHeight;
LPSTR lpData =(LPSTR)GlobalAllocPtr(GPTR, size);
BITMAPFILEHEADER bfh;
/////////////////////////////////////////////
BITMAPINFOHEADER bih;
bih.biBitCount = btm.bmBitsPixel;
bih.biClrImportant = 0;
bih.biClrUsed = 0;
bih.biCompression = 0;
bih.biHeight = btm.bmHeight;
bih.biPlanes = 1;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biSizeImage = size;
bih.biWidth = btm.bmWidth;
bih.biXPelsPerMeter = 0;
bih.biYPelsPerMeter = 0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
bfh.bfReserved1 = bfh.bfReserved2 = 0;
bfh.bfType = ((WORD)('M'<< 8)|'B');
bfh.bfSize = 54 + size;
bfh.bfOffBits = 54;
CFileDialog dlg(false,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()==IDOK)
{
CFile bf;
CString ss=dlg.GetPathName();
if(bf.Open(ss, CFile::modeCreate | CFile::modeWrite))
{
bf.WriteHuge(&bfh, sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih, sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData, size);
bf.Close();
}
GlobalFreePtr(lpData);
}
}
存储当前界面大小的图片
C/C++ code
?
/*以图片的形式存储*/
void CChartView::OnButtonSavep()
{
// TODO: Add your control notification handler code here
CClientDC SHDC(this);//取得客户区内存DC
CPaintDC dc(this);
CDC memDC;
CRect rect;
CWnd *pWnd = GetDlgItem(IDC_STATIC_CSHOW);/*指定控件*/
pWnd->GetClientRect(&rect);//rect为控件的大小。
memDC.CreateCompatibleDC(&SHDC);
CBitmap bm;
int Width = rect.Width();//
int Height = rect.Height();//
bm.CreateCompatibleBitmap(&SHDC, Width, Height);
CBitmap* pOld = memDC.SelectObject(&bm);
memDC.BitBlt(0, 0, Width, Height, &SHDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size = btm.bmWidthBytes * btm.bmHeight;
LPSTR lpData =(LPSTR)GlobalAllocPtr(GPTR, size);
BITMAPFILEHEADER bfh;
/////////////////////////////////////////////
BITMAPINFOHEADER bih;
bih.biBitCount = btm.bmBitsPixel;
bih.biClrImportant = 0;
bih.biClrUsed = 0;
bih.biCompression = 0;
bih.biHeight = btm.bmHeight;
bih.biPlanes = 1;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biSizeImage = size;
bih.biWidth = btm.bmWidth;
bih.biXPelsPerMeter = 0;
bih.biYPelsPerMeter = 0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
bfh.bfReserved1 = bfh.bfReserved2 = 0;
bfh.bfType = ((WORD)('M'<< 8)|'B');
bfh.bfSize = 54 + size;
bfh.bfOffBits = 54;
CFileDialog dlg(false,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()==IDOK)
{
CFile bf;
CString ss=dlg.GetPathName();
if(bf.Open(ss, CFile::modeCreate | CFile::modeWrite))
{
bf.WriteHuge(&bfh, sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih, sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData, size);
bf.Close();
}
GlobalFreePtr(lpData);
}
}
存储当前界面大小的图片
C/C++ code
?
相关文章推荐
- jQuery的图片显示与隐藏,以及修改文档内容
- WPF学习06:转换控件内容为可存储图片
- 如何将pdf文档内容转成图片
- ASP.NET中让图片以二进制的形式存储在数据库中
- 将一个图片以二进制值的形式存入Xml文档中
- ASP.NET中让图片以二进制的形式存储在数据库中
- .Net下二进制形式的文件(图片)的存储与读取(原创)
- poi操作word文档,以07版本为参考,将word文档中图片替换为文本(替换文本也一样),读图片可选文字内容
- iOS对UIView对象或子类对象截屏(截取的内容以UIImage的形式存储)
- SQL_把表中字段存储的逗号隔开内容转换成列表形式
- C#打开WORD文档内容并显示(未完善表格图片等排版显示的处理)
- ASP.NET中让图片以二进制的形式存储在数据库中
- .Net下二进制形式的文件(图片)的存储与读取 [ZT]
- C# 将RichTextBox中内容的文档以二进制形式存
- C#打开WORD文档内容并显示(未完善表格图片等排版显示的处理)
- JAVA将以二进制形式存储在Access数据库中的图片提取出来
- java 处理word文档 (含图片,表格内容)
- ASP.NET中让图片以二进制的形式存储在数据库中
- 将pdf文档内容转换成jpg图片的方法
- .Net下二进制形式的文件(图片)的存储与读取(转载)