线程能操作内存流吗? 能!不过BitMap是不是牵扯到VCL的屏幕部分了。如果不是对时间要求很敏感可以试一下在Synchronize中执行相关操作。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在线程内可以很安全的实用TMemoryStream,你最好能把一段错误的源码贴出来看看,大家才好找错 请看下面出错的代码,请给出解决方法:procedure ScreenCap(MyRect: TRect; var BmpStream: TMemoryStream);var RectWidth, RectHeight: Integer; SourceDC, DestDC: Integer; Bitmap: TBitmap;begin BmpStream.Clear; if MyRect.Right <= MyRect.Left then exit; if MyRect.Bottom <= MyRect.Top then exit; RectWidth := MyRect.Right - MyRect.Left; RectHeight := MyRect.Bottom - MyRect.Top; SourceDC := CreateDC('DISPLAY', '' , '' , nil); DestDC := CreateCompatibleDC(SourceDC); Bitmap := TBitmap.Create; Bitmap.Handle := CreateCompatibleBitmap(SourceDC, RectWidth, RectHeight); SelectObject(DestDC, Bitmap.Handle); BitBlt(DestDC, 0, 0, RectWidth, RectHeight, SourceDC, MyRect.Left, MyRect.Top, SRCCOPY); if BitMap.Empty then exit; BitMap.SaveToStream(BmpStream); BmpStream.Position := 0; DeleteDC(DestDC); DeleteDC(SourceDC); Bitmap.Free;end; 我的问题是涉及到了屏幕的抓取问题,而且对及时的屏幕状态要求很敏感的反应。各位高手,给出个解决方法吧!我重新做了测试,问题出在,执行BitBlt 以后的 BitMap 上,在此时它操作数据流都是会出现死等状态的 . BmpStream是在哪儿创建的?不会是在主线程中间创建的吧? 辩认真假 帮忙看看这个很急的问题 奇怪!!!!!! 求助:实现一个excel功能的控件 一动态创建的窗体上有一个label,在创建时要让label显示不同字符。怎么传参数 QuickRep的PageFooter怎么没了????????? 用WebBrowse控件遇到难题??? 如何捕获IE里的鼠标事件? 来者有分 在线等待!!!!!!!! 怎样隐藏窗口? 请问:三层结构中主细表如何插入和删除? 修改注册表的问题
procedure ScreenCap(MyRect: TRect; var BmpStream: TMemoryStream);
var
RectWidth, RectHeight: Integer;
SourceDC, DestDC: Integer;
Bitmap: TBitmap;
begin
BmpStream.Clear;
if MyRect.Right <= MyRect.Left then exit;
if MyRect.Bottom <= MyRect.Top then exit; RectWidth := MyRect.Right - MyRect.Left;
RectHeight := MyRect.Bottom - MyRect.Top; SourceDC := CreateDC('DISPLAY', '' , '' , nil);
DestDC := CreateCompatibleDC(SourceDC);
Bitmap := TBitmap.Create;
Bitmap.Handle := CreateCompatibleBitmap(SourceDC, RectWidth, RectHeight);
SelectObject(DestDC, Bitmap.Handle);
BitBlt(DestDC, 0, 0, RectWidth, RectHeight, SourceDC, MyRect.Left, MyRect.Top, SRCCOPY);
if BitMap.Empty then
exit;
BitMap.SaveToStream(BmpStream);
BmpStream.Position := 0;
DeleteDC(DestDC);
DeleteDC(SourceDC);
Bitmap.Free;
end;
很敏感的反应。各位高手,给出个解决方法吧!我重新做了测试,
问题出在,执行BitBlt 以后的 BitMap 上,在此时它操作数据流
都是会出现死等状态的 .