Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Inhalt einer Scrollbox als JPG speichern


Hendrik - Mo 02.03.09 18:17
Titel: Inhalt einer Scrollbox als JPG speichern
Hey!

Ich bin mit meinem Problem so langsam am verzweifeln:

Ich möchte den Inhalt einer Scrollbox (dort sind über einem Hintergrundbild weitere Bilder vom Benutzer angeordnet) als JPG speichern. Das funktioniert über das Umwandeln des Formstyles in FSNonen, Anpassen der Fenstergröße an das Hintergrundbild und schließlich die Procedure getformimage auch. Wenn die Größe des Hintergrundbildes die Bildschirmgröße übersteigt, wird natürlich ein Teil abgeschnitten.

Hat irgendjemand eine Idee. Ich habe schon einen Weg gesucht, die Komponenten auf ein Bitmap zu zeichnen. Das scheint jedoch nicht möglich zu sein.


Jens Jung - Do 05.03.09 10:10

Hi Hendrik,

was genaues kann ich Dir da auch nicht liefern, aber sollte es nicht möglich sein einen Screenshot in ein neues Image zu kopieren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Procedure TFrmScreenshot.ScreenShot(Bild: TBitMap;hoch:integer;breit:integer);
var                      //Screenshot machen
  c: TCanvas;            //hab ich auch nur aus'm Forum kopiert
  r: TRect;
begin
  c:= TCanvas.Create;
  c.Handle:= GetWindowDC (GetDesktopWindow);
  try
    r:= Rect(0,0,screen.width,screen.height);
    Bild.Width:=breit;             //höhe und Breite des Bilds begenzen
    Bild.Height:=hoch;
    Bild.Canvas.CopyRect(r, c, r); //Bild in unsichtbares Image reinmachen
  finally
    ReleaseDC(0, c.handle);
    c.Free;
  end;
end;

Dann die ScrollBox zu verschieben bzw. scrollen, vom Rest einen Screenshot zu machen und an das Image anzufügen?
War nur so'n Gedankenblitz, aber vielleicht geht's ja.

Gruß
Jens

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt