Indy의 UDPClient로 모니터 화면을 캡쳐해서 Stream으로 날려주려고 UDPSever로 받아서 Image에 뿌려주는건데요......계속 에러가 나네요......ㅠ.ㅠ
몇일째 고민하고 있네요......및에 소스를 보시고 잘못된 부분좀 지적해주세요.......
procedure TfrmClient.Button2Click(Sender: TObject);
var
myStream: TMemoryStream;
myBmp: TBitmap;
myJpeg: TJpegImage;
DeskTopDC: HDc;
Canvas: TCanvas;
R: TRect;
begin
repeat
try
myStream := TMemoryStream.Create;
Canvas := TCanvas.Create;
myBmp := TBitmap.Create;
myJpeg := TJpegimage.Create;
DeskTopDC := GetWindowDC(GetDesktopWindow);
Canvas.Handle := DeskTopDC; //GetDC(0);
mybmp.Width := Screen.Width;
myBmp.Height := Screen.Height;
R := Rect(0, 0, Screen.Width, Screen.Height);
mybmp.Canvas.CopyRect(R, Canvas, R);
myJpeg.Assign(mybmp);
myJpeg.CompressionQuality:= 50;
myJpeg.Compress;
myJpeg.SaveToStream(myStream);
Image1.Picture.Assign(myJpeg);
UDPClient.SendBuffer(myStream, myStream.size);
Application.ProcessMessages;
sleep(100);
finally
Canvas.Free;
myJpeg.Free;
myStream.Free;
mybmp.Free;
end;
until CheckBox1.checked;
end;
받는 부분입니다....
procedure TfrmServer.UDPServerUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
myStream: TMemoryStream;
myJpeg: TJpegImage;
begin
try
myStream := TMemoryStream.Create;
myJpeg := TJpegImage.Create;
myStream.CopyFrom(AData, AData.size);
myJpeg.LoadFromStream(myStream);
Image1.Picture.Assign(myJpeg);
finally
myStream.Free;
myJpeg.Free;
end;
end;
감사합니다........
GIF로 보내는 것에 JPEG으로 보내는것도 포함 모듈화 해놓았으니 소스 몇줄만 고쳐 주시
면 사용가능할겁니다...