连续发送截屏图象后的问题!!(100分)

  • 主题发起人 主题发起人 logpie
  • 开始时间 开始时间
比较问题已解决...
必须在每次截完后加句image1/2.picture.bitmap.pixelformat:=pf24bit;才行。
但这样每次转换PIXELFORMAT回明显感到停顿。

怎么样能加快速度?
 
我把处理PIEXELFORMAT的放进了线程里
procedure Tconfirm.Execute;
begin
form1.image2.Picture.Bitmap.PixelFormat :=pf24bit;
synchronize(Give);
end;
procedure tconfirm.Give ;
begin
Form1.Memo1.Lines.Add (inttostr(12345));
end;
end.
----------
main的调用代码:
procedure TForm1.Timer1Timer(Sender: TObject);
var nthr:Tconfirm;
begin
bitblt(image2.Canvas.Handle ,0,0,screen.Width ,screen.Height ,src,0,0,srccopy);
nthr:=Tconfirm.Create(false);
end;
--------

MAIN调用后怎么仍然有明显停顿??
 
upupupup
up
upup
up
up
up
 
也许截屏速度太慢。试着把间隔加大。 试试5000ms

也许你的位图没有画到image上。 试着直接用Tbitmap来存储。
就这些。
 
我试了一下,截屏速度很快,只是在我的比较代码中必须每次比较前设置PIXEELFORMAT
但是每次设置一次须耗费一端时间,造成明显停顿感
 
你截的屏不要拷贝到Image中直接拷贝到单独 TBitmap 实例中,
而TBitmap的PixelFormat预先设置成pf24bit就可以了如:

FromCreate事件中:
....
BMP:=TBitmap.Create;
BMP.Width:=Screen.Width;
BMP.Height:=Screen.Height;
BMP.PixelFormat:=pf24bit;
...
截屏幕用:
...
BitBlt(BMP.Canvas.Handle,0,0,screen.Width ,screen.Height ,SRCDC,0,0,SRCCOPY);
...


good luck
 
看看!

帮你UP!
 
后退
顶部