得到图像变化率

void showVideo(HWND dlgHwnd, HWND curHwnd)
{

	HDC curHDC = NULL;

	RECT rc; 
	HDC hDesDC = NULL;
	RECT rect;

	HDC curHMemDC = NULL;

	HWND picDWnd = NULL;
	curHDC = ::GetWindowDC(curHwnd);

	//创建兼容DC

	::GetWindowRect(curHwnd, &rc);

	//得到目标位图
	HDC hBufDC;
	HDC hBufDC2;
	HDC hBufDC3;
	HBITMAP hBitmap, hBitmap2, hBitmap3,hBitTemp;
	//创建设备上下文(HDC)
	hBufDC = CreateCompatibleDC(curHDC);
	hBufDC2 = CreateCompatibleDC(curHDC);
	hBufDC3 = CreateCompatibleDC(curHDC);
	//创建HBITMAP
	hBitmap = CreateCompatibleBitmap(curHDC, rc.right - rc.left, rc.bottom - rc.top);
	hBitTemp = (HBITMAP)SelectObject(hBufDC, hBitmap);

	hBitmap2 = CreateCompatibleBitmap(curHDC, rc.right - rc.left, rc.bottom - rc.top);
	hBitTemp = (HBITMAP)SelectObject(hBufDC2, hBitmap2);

	hBitmap3 = CreateCompatibleBitmap(curHDC, rc.right - rc.left, rc.bottom - rc.top);
	hBitTemp = (HBITMAP)SelectObject(hBufDC3, hBitmap3);

	得到位图缓冲区
	//BitBlt(hBufDC, 0, 0, rc.right - rc.left, rc.bottom - rc.top, curHDC, 0, 0, SRCCOPY);
	for (int i = 0; i < 10; i++)
	{

		//if (FALSE == PrintWindow(curHwnd, hBufDC2, PW_CLIENTONLY))
		//{
		//	::PostMessage(dlgHwnd, WM_IS_VIDEO, 0, (LPARAM)curHwnd);
		//	MessageBox(NULL, _T("Error"), _T("cwnd"), MB_OK);
		//}

		//Sleep(100);

		//if (FALSE == PrintWindow(curHwnd, hBufDC3, PW_CLIENTONLY))
		//{
		//	::PostMessage(dlgHwnd, WM_IS_VIDEO, 0, (LPARAM)curHwnd);
		//	MessageBox(NULL, _T("Error"), _T("cwnd"), MB_OK);
		//}

		BitBlt(hBufDC2, 0, 0, rc.right - rc.left, rc.bottom - rc.top, curHDC, 0, 0, SRCCOPY);
		Sleep(100);
		//得到差分图像
		BitBlt(hBufDC2, 0, 0, rc.right - rc.left, rc.bottom - rc.top, curHDC, 0, 0, SRCINVERT);
		//累加差分分量
		BitBlt(hBufDC, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hBufDC2, 0, 0, SRCPAINT);
	}

	//得到差分图像

	处理目标位图

	得到位图缓冲区
	//BitBlt(hBufDC2, 0, 0, rc.right - rc.left, rc.bottom - rc.top, curHDC, 0, 0, SRCCOPY);
	//Sleep(500);
	得到差分图像
	//BitBlt(hBufDC2, 0, 0, rc.right - rc.left, rc.bottom - rc.top, curHDC, 0, 0, SRCINVERT);





	合并差分图
	//BitBlt(hBufDC, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hBufDC2, 0, 0, SRCPAINT);

	//SendMessage(curHwnd, WM_PRINT, (WPARAM)hBufDC, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);
	//处理目标位图
	GetGrayBitmap(hBitmap);




	picDWnd = ::GetDlgItem(dlgHwnd, IDC_VISION);



	::GetWindowRect(picDWnd, &rect);

	hDesDC = ::GetWindowDC(picDWnd);

	::SetStretchBltMode(hDesDC, COLORONCOLOR);
	::StretchBlt(hDesDC, 0, 0, rect.right - rect.left, rect.bottom - rect.top, hBufDC, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SRCCOPY);
	Sleep(100);
	//释放内存
	DeleteObject(hBitmap3);
	DeleteObject(hBitmap2);
	DeleteObject(hBitmap);
	DeleteObject(hBitTemp);
	::DeleteDC(hBufDC);
	::DeleteDC(hBufDC2);
	::DeleteDC(hBufDC3);
	::ReleaseDC(curHwnd, curHDC);
	::ReleaseDC(picDWnd, hDesDC);
	//InvalidateRect(picDWnd, &rect, TRUE);



}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值