Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Formular als JPEG Speichern (https://www.delphipraxis.net/62317-formular-als-jpeg-speichern.html)

poterp 2. Feb 2006 20:22


Formular als JPEG Speichern
 
Hallo,
Bin noch ein Delphi anfänger, kann mich jemanden sagen, wie ich ein Formular (Oberfläche) als JPEG oder GIF speichern kann?????
Danke in Voraus :-D
P.S. Benutze Delphi 7

xaromz 2. Feb 2006 20:49

Re: Formular als JPEG Speichern
 
Hallo und herzlich Willkommen :party: !

Mit der Methode Delphi-Referenz durchsuchenGetFormImage Deines Formulars bekommst Du ein Bitmap des Forms. Wenn Du die unit JPEG.pas einbindest, kannst Du damit ein JPEGImage erstellen. Das weist Du dem JPEG das Bitmap zu (mit Delphi-Referenz durchsuchenAssign) und speichert das JPEG.
Etwa so:
Delphi-Quellcode:
procedure SaveJPEG(Form: TCustomForm; const Path: String);
var
  Bitmap: TBitmap;
  JPEG: TJPEGImage;
begin
  Bitmap := Form.GetFormImage;
  JPEG := TJPEGImage.Create;
  JPEG.Assign(Bitmap);
  JPEG.SaveToFile(Path);
  JPEG.Free;
  Bitmap.Free;
end;
Aufzurufen so:
Delphi-Quellcode:
SaveJPEG(Form1, 'C:\Screenshot.jpg');
Gruß
xaromz

poterp 2. Feb 2006 21:54

Re: Formular als JPEG Speichern
 
Danke Xaromz,
ich habe deine Methode Probiert uzw:
procedure SaveJPEG(Form: TCustomForm; const Path: String);
var
Bitmap: TBitmap;
JPEG: TJPEGImage;
begin
Bitmap := Form.GetFormImage;
JPEG := TJPEGImage.Create;
JPEG.Assign(Bitmap);
JPEG.SaveToFile(Path);
JPEG.Free;
Bitmap.Free;
end;


Aufzurufen so:
Delphi-Quellcode: markieren
SaveJPEG(Form1, 'C:\Screenshot.jpg');

und ich bekomme ein Mehrere Fehler meldung.
soll ich vorher eine Function GETImage deklarieren???

danke in Voraus

Hador 2. Feb 2006 22:07

Re: Formular als JPEG Speichern
 
Du musst noch
Delphi-Quellcode:
uses
  ... jpeg ...
hinzufügen

Die Prozedur würde ich noch folgendermaßen ändern:
Delphi-Quellcode:
procedure SaveJPEG(Form: TCustomForm; const Path: String);
var
  JPEG: TJPEGImage;
begin
  JPEG := TJPEGImage.Create;
  JPEG.Assign(Form.GetFormImage);
  JPEG.SaveToFile(Path);
  JPEG.Free;
end;
Und aufrufen kannst du sie z.B. so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveJPEG(Self, 'C:\Formular.jpg');
end;
EDIT: Nutze bitte für Quellcode die Delphi Tags

xaromz 2. Feb 2006 22:48

Re: Formular als JPEG Speichern
 
Hallo,
Zitat:

Zitat von Hador
Die Prozedur würde ich noch folgendermaßen ändern:
...

Speicherleck! Speicherleck! Jehova! Jehova!

GetFormImage liefert Dir ein TBitmap zurück. Das muss auch freigegeben werden.

Gruß
xaromz

Hador 3. Feb 2006 13:01

Re: Formular als JPEG Speichern
 
Zitat:

Zitat von xaromz
Speicherleck! Speicherleck! Jehova! Jehova!

Du hast Jehova gesagt - Los steinigt ihn :wink:

Zitat:

Zitat von xaromz
GetFormImage liefert Dir ein TBitmap zurück. Das muss auch freigegeben werden.

:wall: Du hast vollkommen Recht.
Ich werde sofort als Bestrafung 1.000.000x schreiben: "Ich soll keine Speicherlecks produzieren!"

:gruebel: Nja - jetzt muss ich nur noch herausfinden, wiso mein Verstand das gestern vernachlässigt hat.

wildschwein 31. Dez 2009 19:11

Re: Formular als JPEG Speichern
 
he cool

danke für diese hilfe

jetzt frage ich mich wie man es programieren kann, dass der benutzer auswählen kann wo das bild gespeichert werden kann.

danke für deine nachträgliche hilfe

PhilmacFLy 31. Dez 2009 19:50

Re: Formular als JPEG Speichern
 
Am besten du benutzt eine SaveDialog
Delphi-Quellcode:
var
  JPEG: TJPEGImage;
begin
  if
  SaveDialog1.Execute
  then
  begin
    JPEG := TJPEGImage.Create;
    JPEG.Assign(Form1.GetFormImage);
    JPEG.SaveToFile(SaveDialog1.Filename);
    JPEG.Free;
  end;

wildschwein 1. Jan 2010 15:52

Re: Formular als JPEG Speichern
 
cool danke dür deine hilfe

wenn du mir jetzt noch veraten kannst wie der filename automatisch das datum als name wählt bist du der größte!

SirThornberry 1. Jan 2010 15:56

Re: Formular als JPEG Speichern
 
stop. Pro Thema nur eine Frage! Ansonsten findet man später über die Suchfunktion nichts und wenn jemand auf eine frühere Frage antwortet wird das auch ein riesiges Durcheinander.
Eröffne also bitte ein neues Thema wenn du eine neue Frage hast :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz