Przesyłanie zrzutu ekranu

0

Nie będę wnikał w samo przesyłanie ale postanowiłem zrobić
test z zapisaniem zrzutu z TBitamp do TMemoryStream i odczytanie
w drugim TBitmap z tego Streamu, niestety nie działa...

var
  Can: TCanvas;
  Bit, Bit2: TBitmap;
  Ms: TMemoryStream;
begin
  Can := TCanvas.Create;
  Bit := TBitmap.Create;
  Bit2 := TBitmap.Create;
  Ms := TMemoryStream.Create;
  
  Can.Handle := GetWindowDC(GetDesktopWindow);
  Bit.Width := Screen.Width;
  Bit.Height := Screen.Height;
  Bit.Canvas.CopyRect(
    Rect(0, 0, Screen.Width, Screen.Height),
    Can,
    Rect (0, 0, Screen.Width, Screen.Height)
  );
  Bit.SaveToStream(Ms);

  Bit2.Width := Screen.Width;
  Bit2.Height := Screen.Height;
  Bit2.LoadFromStream(Ms);
  Canvas.CopyRect(
    Rect(0, 0, Screen.Width, Screen.Height),
    Bit2.Canvas,
    Rect (0, 0, Screen.Width, Screen.Height)
  );

  Can.Free;
  Bit.Free;
  Bit2.Free;
  Ms.Free;
end;

Dlaczego ... ?

0

Ostatnio bawiłem się z zapisem Bitmap do MemoryStream i odwrotnie, ale też nie chciało działać!! Jeżeli zrobisz zapis nie do streamu tylko do pliku to powinno działać dobrze. Mam dziwne wrażenie, że coś jest nie tak w samym Delphim, chyba że się mylę. [???]

0
var
  Can: TCanvas;
  Bit, Bit2: TBitmap;
  Ms: TMemoryStream;
begin
  Can := TCanvas.Create;
  Bit := TBitmap.Create;
  Bit2 := TBitmap.Create;
  Ms := TMemoryStream.Create;
  
  Can.Handle := GetWindowDC(GetDesktopWindow);
  Bit.Width := Screen.Width;
  Bit.Height := Screen.Height;
  Bit.Canvas.CopyRect(
    Rect(0, 0, Screen.Width, Screen.Height),
    Can,
    Rect (0, 0, Screen.Width, Screen.Height)
  );
  Bit.SaveToStream(Ms);

  Bit2.Width := Screen.Width;
  Bit2.Height := Screen.Height;
  Ms.Position := 0; //Trzeba od początku odczytywać :)
  Bit2.LoadFromStream(Ms);
  Canvas.CopyRect(
    Rect(0, 0, Screen.Width, Screen.Height),
    Bit2.Canvas,
    Rect (0, 0, Screen.Width, Screen.Height)
  );

  Can.Free;
  Bit.Free;
  Bit2.Free;
  Ms.Free;
end;
0

Działa pięknie... thx [hurra] [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1