Screenshot aus einem Panel erstellen. Bild immer schwarz

Antworten
LazUser
Beiträge: 2
Registriert: Mi 11. Jul 2012, 10:07

Screenshot aus einem Panel erstellen. Bild immer schwarz

Beitrag von LazUser »

Hallo,

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?

Benutzeravatar
theo
Beiträge: 8398
Registriert: Mo 11. Sep 2006, 19:01

Re: Screenshot aus einem Panel erstellen. Bild immer schwarz

Beitrag von theo »

Funktioniert es unter OSX überhaupt, wenn du den ganzen Bildschirm aufnimmst?

http://wiki.freepascal.org/Developing_w ... _erstellen

LazUser
Beiträge: 2
Registriert: Mi 11. Jul 2012, 10:07

Re: Screenshot aus einem Panel erstellen. Bild immer schwarz

Beitrag von LazUser »

Ne, leider auch nicht, zumindest so nicht :(
Ich hatte das so auch probiert und daraufhin einen Link gefunden, wo gesagt wird, dass das unter MAC mit RawImage_FromDevice gehen soll(http://www.lazarus.freepascal.org/index ... ic=16980.0).
Aber leider auch ohne Erfolg.

Benutzeravatar
theo
Beiträge: 8398
Registriert: Mo 11. Sep 2006, 19:01

Re: Screenshot aus einem Panel erstellen. Bild immer schwarz

Beitrag von theo »

Tja, Mac halt... :mrgreen:

Das auch schon gelesen?
http://wiki.freepascal.org/Carbon_inter ... hot_taking

Scotty
Beiträge: 770
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Screenshot aus einem Panel erstellen. Bild immer schwarz

Beitrag von Scotty »

AFAIK kann man unter Darwin_Carbon überhaupt nichts direkt mit dem Canvas machen - zumindest nicht außerhalb von OnPaint. Aber mit Qt könnte es funktionieren.

Antworten