该过程得到整个屏幕的图象拷贝,并利用压缩流SourceStream和内存流 Deststream将位图压缩,并重新把位图大小和压缩数据流保存到位图流中,发送出去,发送位图大小的目的是在解压前来确定需要的内存空间。
procedure TServerForm.NMStrmServMSG(Sender: TComponent;
const sFrom: String; strm: TStream);
Var
StreamStr,DestStream:TMemoryStream;
SourceStream:TDecompressionStream;
count:Integer;
buffer:pointer;
begin
ScreenImage.Picture.Bitmap:=nil;
If Strm Is TMemoryStream Then
StreamStr := Strm AS TMemoryStream
Else
Exit;
StreamStr.Position := 0;
StreamStr.ReadBuffer(Count, Sizeof(Count));
{得到位图的大小}
GetMem(Buffer,Count);
{申请数据空间}
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(StreamStr);
{构建解压流,压缩数据由StreamStr 流得到}
StatusBar.SimpleText := '正在处理图象';
Try
SourceStream.ReadBuffer(Buffer^,Count);
{读出解压数据}
DestStream.WriteBuffer(Buffer^,Count);
{保存到位图流中}
DestStream.Position := 0;
ScreenImage.Picture.Bitmap.LoadFromStream(DestStream);
{显示到屏幕上}
Finally
FreeMem(Buffer);
DestStream.Destroy;
SourceStream.Destroy;
End;
end;
该过程首先从得到的数据流中取得位图大小,并申请内存空间,然后建立解压流,并将解压数据保存到位图流中,然后显示到屏幕上。
本文程序在Delphi6.0中调试通过
(T113)
上一篇: 使用Delphi启动和关闭外部应用程序
下一篇: Delphi利用Windows GDI实现文字倾斜
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!