Morgen,
ich versuche gerade eine Replay-Funktion in ein Spiel einzubauen. Das mache ich so, dass ich in einem Timer Screenshots von einem Bereich des Screens mache und diese wiederum in einem Timer "abspiele". Mit dem Ergebnis bin ich sehr unzufrieden, weil wenn die Form verdeckt ist, das überdeckende Fenster gespeichert wird und überhaupt kommt' mir diese Lösung sehr wackelig vor.
Hat jemand bessere Ideen eine Replay-Funktion in ein Spiel einzubauen?
Hier ma' die Screenshot-Funktion:
Delphi-Quellcode:
function CaptureScreenRect( ARect: TRect ): TBitmap;
var
ScreenDC: HDC;
begin
Result := TBitmap.Create;
with Result, ARect do
begin
Width := Right - Left;
Height := Bottom - Top;
ScreenDC := GetDC( 0 );
try
BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC,
Left, Top, SRCCOPY );
finally
ReleaseDC( 0, ScreenDC );
end;
end;
result.SaveToFile(ExtractFilePath(Paramstr(0))+'replay\'+'Shot'+inttostr(nr)+'.bmp');
nr:=nr+1; // <-- eine globale Variable
result.Free;
end;
Gruß
Calculon
--