Hej jeg skal bruge en funktion som kan tage et screenshot, og derefter tage en del af screenshotet og lave det til en stream
fx
MinStream := ScreenShot(X1,Y1,X2,Y2);
mvh.
Lasse Espeholt
Hej Lasse,
Du kan kopiere fra desktop'en til en bitmap og der efter gemme bitmap'et til en stream.
Her er din funktion (ikke testet) men HUSK at indsætte følgende units i din uses:
- Classes
- Graphics
- Windows
function ScreenShot(ALeft, ATop, ARight, ABottom : Integer) : TStream;
var
Bmp : TBitmap;
DC : HDC;
begin
Result := TMemoryStream.Create;
Result.Position := 0;
Bmp := TBitmap.Create;
try
Bmp.Width := ARight-ALeft;
Bmp.Height := ABottom-ATop;
Bmp.PixelFormat := pf32bit;
DC := GetDC(GetDesktopWindow);
BitBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, DC, ALeft, ATop, SRCCOPY);
Bmp.SaveToStream(Result);
finally
Bmp.Free;
end;
end;
En anden ting, hvis du skal læse fra TStream så husk at sætte position til 0 først.
Du kunne evt. ændre funktionen til at tage TStream som parameter i stedet for.
Dette vil bevirke at du selv bestemmer om det skal væren TFileStream eller TMemoryStream eller en helt tredje.
Håber du kan bruge det.
/Michael.