要分的看过来:)不要错过!(200分)

  • 主题发起人 主题发起人 gaoren
  • 开始时间 开始时间
G

gaoren

Unregistered / Unconfirmed
GUEST, unregistred user!
麻烦大家帮我看一下这个程序,我不知道为什么 nmudp1.SendStream(strr);这句老是有问题

procedure TForm1.BitBtn1Click(Sender: TObject);
var
bmp1:tbitmap;
bmp1canvas:tcanvas;
dc:HDC;
c:string;
begin
strr:=tmemorystream.Create;
bmp1:=tbitmap.Create;
bmp1.Height:=screen.Height;
bmp1.Width:=screen.Width;
dc:=getDC(0);
bmp1canvas:=tcanvas.Create;
bmp1canvas.handle:=dc;
bmp1.Canvas.CopyRect(rect(0,0,bmp1.Width,bmp1.height),bmp1canvas,rect(0,0,screen.Width ,screen.Height));
bmp1canvas.free;
//Form1.Canvas.Draw(0,0,Bmp1);
image1.Picture.Bitmap :=bmp1;
bmp1.SaveToStream(strr);
nmudp1.RemoteHost:='192.168.0.5';
nmudp1.RemotePort :=1024;
nmudp1.SendStream(strr);
strr.Free;
end;
 
试一试将 strr 的指针移到开始端 (是不是这样写: strr.Position:=0)
 
BUG2: strr.Position:=0; //必须指针复位
添加在bmp1.SaveToStream(strr);后面。
 
BUG1: Strr: TMemoryStream;
这一句怎么都不见了?没有这句就肯定出错!
 
流的操作都是从当前位置开始的,所以要
strr.Position:=0
nmudp1.SendStream(strr);
 
我试了一下
bmp1.width=5;
bmp1.height=5;就可以通过,可能是流大小的问题

这个贴子也许有用
http://www.delphibbs.com/delphibbs/dispq.asp?lid=226177
 
老兄真是闊氣﹐一出手就是200分。
 
看看我在这里的回答:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=717652
 
Strr: TMemoryStream;
and
strr.Position:=0;
 
gaoren,昨天给你发的截图程序收到没有?
改一下.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
bmp1:tbitmap;
bmp1canvas:tcanvas;
dc:HDC;
c:string;
strr:TMemoryStream;
begin
try
strr:=tmemorystream.Create;
strr.clear;
bmp1:=tbitmap.Create;
bmp1.Height:=screen.Height;
bmp1.Width:=screen.Width;
dc:=getDC(0);
bmp1canvas:=tcanvas.Create;
bmp1canvas.handle:=dc;
bmp1.Canvas.CopyRect(rect(0,0,bmp1.Width,bmp1.height),bmp1canvas,rect(0,0,screen.Width ,screen.Height));
//Form1.Canvas.Draw(0,0,Bmp1);
image1.Picture.Bitmap :=bmp1;
bmp1.SaveToStream(strr);
strr.position:=0;//在这儿你得将它的起始位置设为最前面.
nmudp1.RemoteHost:='192.168.0.5';
nmudp1.RemotePort :=1024;
nmudp1.SendStream(strr);
finally
bmp1canvas.free;
bmp1.free;
strr.Free;
end;
end;
 
多人接受答案了。
 
都说了,也不用我说了,加分是不要忘了我就行了!
 
后退
顶部