首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

视频采集卡实施StretchBlt将图像放大一点,出现画面静止现象

2012-11-08 
视频采集卡执行StretchBlt将图像放大一点,出现画面静止现象Graphics::TBitmap *BmpRecnew Graphics::TBit

视频采集卡执行StretchBlt将图像放大一点,出现画面静止现象
Graphics::TBitmap *BmpRec=new Graphics::TBitmap();
Graphics::TBitmap *BmpDisplay=new Graphics::TBitmap();
从SDK2000视频采集卡取图像放入BmpRec,可以将源图像直接正常显示在Image1上。
但是一旦执行StretchBlt将图像放大一点,然后鼠标移动到Image1上,就会出现画面静止现象,什么原因呢?

StretchBlt(BmpDisplay->Canvas->Handle,0,0,480,360,
  BmpRec->Canvas->Handle,0,0,320,240,SRCCOPY);
Form1->Image1->Picture->Bitmap->Assign(BmpDisplay);

我还试过用StretchDraw来图像放大,可是问题依旧
BmpDisplay->Canvas->StretchDraw(Rect(0,0,480,360),BmpTemp);

有人说DIB没刷到,我测试过了,StretchBlt耗时才2ms
目前的帧率是26,我降低帧率问题依旧,只要执行StretchBlt就会出现这种现象,
画面有时候就停在那里。

我新建一个Graphics::TBitmap *BmpTemp=new Graphics::TBitmap();
BmpTemp->Assign(BmpRec);
执行StretchBlt将BmpTemp放大,画面不会静止了,但是会闪动,闪动瞬间画面是无图像的。

各路高手帮忙分析一下啊!

[解决办法]
线程中的显示部分最好用Synchronize函数进行同步

热点排行