我爱Aspx >> Asp.Net >> 如何提高截取屏幕的速度?作者: Seaky 发表日期: 1999-10-14 23:29:18 返回《VC论坛》 快速返回
我用如下的方法截取屏幕,但我发现截取整个800x600x24屏幕需约200ms,有没有更快的方法?
越快越好!
HDC hScrDC,hMemDC;
HBITMAP hBitmap,hOldBitmap;
hScrDC=CreateDC("DISPLAY",NULL,NULL,NULL);
hMemDC=CreateCompatibleDC(hScrDC);
hBitmap=CreateCompatibleBitmap(hScrDC,nWidth,nHeight);
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);
BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX,nY,SRCCOPY);
hBitmap=(HBITMAP)SelectObject(hMemDC,hOldBitmap);
谢谢各位。
补充日期: 1999-10-14 23:32:06
smalltalk 1999-10-02 23:30:53
把BitBlt换成其他的函数试试,
比如StretchBlt 或者 StretchDIBits.
或许会快很多的。
Seaky (555079468) 1999-10-05 08:39:29
我试了一下StretchBlt函数和BitBlt函数的效果几乎一样,我想StretchDIBits也差不到哪儿去吧!
我觉得应该换个角度...
我现在用DirectDraw,且已获得主表面的指针但不知下面该怎么做?
是否是这样...
LPDIRECTDRAWSURFACE lpDDSPrimary;
HDC lphDC=NULL;
HBITMAP hBitmap;
lpDDSPrimary->GetDC(&lphDC);
hBitmap=CreateCompatibleBitmap(lphDC,nWidth,nHeight);
...
Seaky (555079468) 1999-10-08 22:17:11
我已知获得主表面的指针后怎么做。
用Lock获取当前帧,然后获得当前屏幕的数据指针“scr”。
但是,我发现这种方法速度仍然不是很快!
我需要抓一次800x600x24的屏幕只需50ms左右的时间!
DirectDraw的高手门,你们在哪儿?
tengel 1999-10-09 11:21:37
其实用Lock锁住之后,你一个点一个点的取位图肯定很慢,能不能使用像汇编的REP MOVS 来做呢,我也不太清楚
Ҷƪл˵?
中关村能成为下一个硅谷吗? -- ..[05-05]
ASP 中Scripting.FileSystemObje..[05-05]
介绍几本COM的书籍 -- 想要学COM..[05-05]
介绍几本COM的书籍 -- 想要学COM..[05-05]
玩的就是“心”跳 - Athlon超频手..[05-05]
鼠标屏幕取词技术的原理和实现[05-05]
Delphi的嵌入式asm一例: Byte快速..[05-05]
Win32 API资源分配释放速查,防止..[05-05]
解决了几乎所有Delphi+Access同仁..[05-05]
COM初学者必看,否则你会后悔的,..[05-05]