在用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());
}
}
}
例程中显示图像我认为主要是在这两个事件中完成的,高手帮忙指点下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());
}
}
}
解决方案 »
- 控件问题啊
- delphi2007中设计窗体时可不可以改成像delphi7中那样
- 请问控件TClientDataSet在其Params属性中设置好参数后,如何设置SQL语句???
- 有哪位对TChart控件比较熟悉,有两个问题请教????
- 有3个问题 1.如何从服务器向客户端发通知 2.关于做跨平台的分布式开发的资料 3如何散分呀
- 急!在ACCESS中的ALTER语句
- 这样的问题,给高分啊!
- 如何对表中的两条记录的字段求和或相除,并输出
- 用indy9控件写聊天程序,信息发送问题
- 关于通过打印机开钱箱
- com+ asp组件问题
- 强烈要求mjp1234airen4385 (骏马)换个头像,长得丑不是你的错,老出来吓人就是你的不对了。
procedure WMERASEBKGND(var Msg: TWMERASEBKGND); message WM_ERASEBKGND;
begin
end;写到这里边就可以,要不你写到ONPAINT 里也可以,
问下在CreateCompatibleDC后建立内存dC后,怎么能跟实际采集卡关联,把采集卡数据写到内存Dc中