视频采集卡执行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函数进行同步