这不显示图像:
按钮发送图片:
procedure TForm1.Button3Click(Sender: TObject);
var
ms :TMemoryStream;
begin
try
ms := TMemoryStream.Create;
IdTCPClient2.Host:=Edit1.Text;
IdTCPClient2.Connect;
Image1.Bitmap.SaveToStream(ms);
ms.Position := 0;
IdTCPClient2.IOHandler.LargeStream := true;
IdTCPClient2.IOHandler.Write(ms,0,True);
finally
IdTCPClient2.Disconnect;
end;
ms.Free;
end;
并且服务器执行
procedure TForm1.IdTCPServer2Execute(AContext: TIdContext);
var
ms:TMemoryStream;
size : Integer;
begin
ms := TFileStream.Create;
try
ms.Position:= 0;
AContext.Connection.IOHandler.LargeStream:=true;
AContext.Connection.IOHandler.ReadStream(ms);
ms.Position:=0;
Image2.Bitmap.LoadFromStream(ms);
finally
ms.Free;
end;
end;
有什么问题?
答案 0 :(得分:3)
OnExecute
。您必须与主线程同步才能更新UI控件。例如:
procedure TForm1.IdTCPServer2Execute(AContext: TIdContext);
var
ms:TMemoryStream;
begin
ms := TMemoryStream.Create;
try
AContext.Connection.IOHandler.LargeStream:=true;
AContext.Connection.IOHandler.ReadStream(ms);
ms.Position := 0;
TThread.Synchronize(nil,
procedure
begin
Image2.Bitmap.LoadFromStream(ms);
end
);
finally
ms.Free;
end;
end;