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;
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;
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?