【框架-MFC】MFC下截取窗口特定部分并保存为图片

本文介绍了一种方法,用于捕获Windows应用程序中的特定控件(如IDC_VIEW)的内容,并将其保存为常见的图像格式,如BMP、JPEG等。通过使用Windows API函数,如GetWindowRect、ScreenToClient、GetWindowDC等,可以实现从控件获取位图,再利用CImage类保存到文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	CRect rcPlot;
	GetDlgItem(IDC_VIEW)->GetWindowRect(&rcPlot); //获取IDC_VIEW在整个屏幕中的像素位置
	ScreenToClient(&rcPlot);//获取IDC_VIEW在父窗口中的位置

	HDC hDC= ::GetWindowDC(GetDlgItem(IDC_VIEW)->GetSafeHwnd());
	HDC hDCMem= ::CreateCompatibleDC(hDC);// 建立和屏幕兼容的bitmap 

	HBITMAP hBitmap= ::CreateCompatibleBitmap(hDC,rcPlot.Width(),rcPlot.Height());
	HBITMAP hOldBitmap= (HBITMAP)::SelectObject(hDCMem,hBitmap);////将memBitmap选入内存DC 

	::BitBlt(hDCMem,0,0,rcPlot.Width(),rcPlot.Height(),hDC,0,0,SRCCOPY);// 调解高度宽度 
	::SelectObject(hDCMem,hOldBitmap);
	CImage image;
	image.Attach(hBitmap); //将位图加入图片表中

	CString strFilter=L"位图文件(*.bmp)|*.bmp|JPEG 图像文件|*.jpg|GIF 图像文件|*.gif|PNG 图像文件|*.png||"; 
	CFileDialog dlg(false,L"bmp",L"曲线.bmp",NULL,strFilter); 
	if ( IDOK == dlg.DoModal())  
	{
		image.Save(dlg.GetPathName());
	}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值