VC中如何将控件保存为图片

第一种方法:

void CItouziDlg::OnBnClickedSave()

{
HBITMAP hBitmap   =   NULL;  

//创建位图段  
BITMAPINFO bmi;  
LPBYTE pBits;  
ZeroMemory(&bmi,sizeof(bmi));  
//IDC_CHARTCTRL为控件变量名(可以是任何控件!)  
CDC *pShowDC = GetDlgItem(IDC_CHARTCTRL)->GetDC();  
//获取控件的宽度和高度  //
CRect rcShow;  
GetDlgItem(IDC_CHARTCTRL)->GetWindowRect(&rcShow);  
bmi.bmiHeader.biSize   =   sizeof(BITMAPINFOHEADER);  
bmi.bmiHeader.biWidth   =   rcShow.Width();  
bmi.bmiHeader.biHeight   =  rcShow.Height();  
bmi.bmiHeader.biPlanes   =   1;  
bmi.bmiHeader.biBitCount   =   24;  
bmi.bmiHeader.biCompression   =   BI_RGB;  
hBitmap = CreateDIBSection(pShowDC->m_hDC,&bmi,DIB_RGB_COLORS,(void **)&pBits,0,0);  
//创建兼容dc并选择位图段  
CDC dcMem;  
dcMem.CreateCompatibleDC(pShowDC);  
dcMem.SelectObject(hBitmap);  
dcMem.BitBlt(0,0,rcShow.Width(),rcShow.Height(),pShowDC,0,0,SRCCOPY);  
GetDlgItem(IDC_CHARTCTRL)->ReleaseDC(pShowDC);  
if( hBitmap )  
{   
CImage img;   
img.Attach(hBitmap);   
img.Save(_T("tf.bmp"));   
img.Save(_T("tf.jpg"));
DeleteObject(hBitmap);   
AfxMessageBox(_T("保存图片成功!"));

}

}

第一种方法:

void CItouziDlg::OnBnClickedSave()

{

//IDC_CHARTCTRL为控件变量名(可以是任何控件!)  
CDC *pShowDC = GetDlgItem(IDC_CHARTCTRL)->GetDC();  

CImage imag; 

//获取控件的宽度和高度 

CRect rcClient; 

GetDlgItem(IDC_CHARTCTRL)->GetWindowRect(&rcClient); imag.Create(rcClient.Width(),rcClient.Height(),32);

::BitBlt(imag.GetDC(),0,0,rcClient.Width(),rcClient.Height(),pdc->m_hDC,0,0,SRCCOPY); 

imag.Save(_T("tf.bmp")); 

imag.Save(_T("tf.jpg")); 

ReleaseDC(pdc);

imag.ReleaseDC(); 

AfxMessageBox(_T("保存图片成功!"));

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值