Ich möchte, alle Objekte innerhalb eines Panels in eine Datei speichern(ein Screenshot aus einem bestimmten Bereich).
Hierzu habe ich schon einige Versuche gestartet, unter anderem folgende:
Code: Alles auswählen
procedure SavePanel;
var
B: TBitmap;
begin
B: TBitmap.Create;
try
B.Width := Panel.Width;
B.Height := Panel.Height;
B.Canvas.CopyRect(Rect(0, 0, B.Width, B.Height), Panel.Canvas, Rect(0, 0, Panel.Width, Panel.Height));
B.SaveToFile("/Users/laz/Panel.bmp");
finally
B.Free;
end;
end;
Oder folgendes
Code: Alles auswählen
var
DC: HDC;
R: TRawImage;
B: TBitmap;
begin
B := TBitmap.Create;
R := TRawImage.Create(0, 0);
try
DC := GetDC(Panel.Handle);
RawImage_FromDevice(R, DC, Rect(0, 0, Panel.Width, Panel.Height));
B.LoadFromRawImage(B, True);
B.SaveToFile("/Users/laz/Panel.bmp");
finally
B.Free;
R.Free;
end;
end;
Ich habe diese beiden Varianten unter Windows und MAC OSX Lion 11.7 ausprobiert.
Mit Windows funktionieren beide Varianten, unter MAC keine von beiden. Das abgespeicherte Bild ist immer schwarz, ich vermute das der Screenshot nicht richtig aufgenommen wird.
Hat jemand eine Idee, wie dieses Problem umgesetzt werden kann?