在用delphi写采集卡的显示程序,原采集卡例程是用c写的,我对c不熟悉,而且对图像处理也不熟悉,很多看不明白,
例程中显示图像我认为主要是在这两个事件中完成的,高手帮忙指点下BOOL COsdDlg::OnEraseBkgnd(CDC* pDC) 
{
//*
CreateCacheBmp(pDC);
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap *pOldBmp = dcMem.SelectObject(&m_bmpCache);
CRect rc;
GetClientRect(rc);
dcMem.FillSolidRect(rc,COLOR_OVERLAY);
PaintIfNoVideo(&dcMem);
PaintOsd(&dcMem);
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOldBmp);
return TRUE;
//*/
return CDialog::OnEraseBkgnd(pDC);
}void COsdDlg::CreateCacheBmp(CDC *pDC)
{
ASSERT(IsWindow(m_hWnd)); CRect rc;
GetClientRect(rc);
if(m_bmpCache.GetSafeHandle() == NULL)
m_bmpCache.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
else
{
BITMAP bmp;
m_bmpCache.GetBitmap(&bmp);
if(bmp.bmWidth != rc.Width() || bmp.bmHeight != rc.Height())
{
m_bmpCache.DeleteObject();
m_bmpCache.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
}
}
}