从Tbitmap中直接读出位图信息存入流中(100分)

  • 主题发起人 主题发起人 fyee
  • 开始时间 开始时间
F

fyee

Unregistered / Unconfirmed
GUEST, unregistred user!
var bmp:TbitMap;
bitblt(bmp.canvas.handle,0,0,100,100,getWindowDC(0),0,0);
截屏获得的bmp不用savetostream,直接自己获得其地址读出数据到
TMemorystream
 
建议还是用savetostream操作吧,直接读数据不会快的。
 
可以用Scanline,一行一行的读出来,速度是非常快的,
800*600的16bit图只要8~9毫秒。
用savetostream也差不多。
要注意:从最下面一行开始,因为得到的图是倒置的
 
savetostream的时候,全屏1024*768 16bit时占用0.24秒
scanline 更慢,希望能减少一半左右,
我的思路是直接将内存中Tbitmap的数据直接用memorycopy 到别处

有没有高手做过啊,help!!!
 
你的数据不对!不应该那么长的,一定是缺了什么。

我的数据是花了半个月时间,经过N次试验得出来的。

用Scanline是很快的动作。
 
想干什么?以下不是很好!

procedure TForm1.Button1Click(Sender: TObject);
var
bmp:TbitMap;
m:TMemorystream;
begin
bmp:=TbitMap.create;
bitblt(bmp.canvas.handle,0,0,100,100,getWindowDC(0),0,0,SRCCOPY );
m:=TMemorystream.Create;
bmp.SaveToStream(m);
bmp.free;
// 对 m 进行处理
m.free;
end;
 
后退
顶部