Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Paintbox mit SaveDialog speichern? (https://www.delphipraxis.net/186714-paintbox-mit-savedialog-speichern.html)

GroZ 24. Sep 2015 10:05

Delphi-Version: 7

Paintbox mit SaveDialog speichern?
 
Heyho ich bins mal wieder.
Ich brauche erneut eure Hilfe.
Ich hab ein MiniPaint programmiert was auch so gut wie fertig ist. Bloß möchte ich jetzt noch Speichern. Meine Frage ist nun wie speicher ich das mit dem SaveDialog?
Ich habe ein Menü eingebaut und dann öffne ich wenn ich auf Speichern drücke den SaveDialog.
Wenn ich dann den Dateinamen eingebe sehe ich die Datei nicht.
Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    begin
      SaveDialog1.Filename := ChangeFileExt(SaveDialog1.FileName + '.jpg');
      AssignFile(F, SaveDialog1.Filename);
    try
      Rewrite(f);
      Write(f);
    finally
      CloseFile;
  end;
end;

baumina 24. Sep 2015 10:14

AW: Paintbox mit SaveDialog speichern?
 
Das das überhaupt kompiliert wundert mich, denn allein beim Closefile fehlt was. Und was da mit Write geschrieben werden soll weiß auch keiner.

GroZ 24. Sep 2015 10:31

AW: Paintbox mit SaveDialog speichern?
 
kompiliert wird das nicht:P
Bin bloß langsam überfordert und finde auch nix wie ich die Paintbox bzw das Canvas speichern kann...

uligerhardt 24. Sep 2015 10:33

AW: Paintbox mit SaveDialog speichern?
 
Wenn du nur über PaintBox1.Canvas auf die Paintbox malst, kannst du gar nichts speichern, weil das alles beim kleinsten Ding weg ist. Ändere mal zur Laufzeit die Größe der Form o.ä und schon ist alles weg, was du vorher gemalt hast.

Du könntest z.B. stattdessen auf ein Bitmap malen und das auch in der PaintBox anzeigen. Ein Bitmap kannst du mit SaveToFile speichern.

GroZ 24. Sep 2015 10:41

AW: Paintbox mit SaveDialog speichern?
 
Das muss ich verneinen ich kann die Größe ändern wie ich will und es bleibt das bild. Kann man die Bitmap mit dem SaveDialog speichern? würde das gerne zur Laufzeit bestimmen wo ich die speichere

uligerhardt 24. Sep 2015 10:45

AW: Paintbox mit SaveDialog speichern?
 
Zitat:

Zitat von GroZ (Beitrag 1316828)
Das muss ich verneinen ich kann die Größe ändern wie ich will und es bleibt das bild.

Kann sein. Seit Vista/Windows 7 löscht das Betriebssysten den Bildschirm nicht mehr so oft. Persistent ist ein PaintBox-Canvas trotzdem nicht.

Zitat:

Zitat von GroZ (Beitrag 1316828)
Kann man die Bitmap mit dem SaveDialog speichern? würde das gerne zur Laufzeit bestimmen wo ich die speichere

Mit dem SaveDialog fragst du den Benutzer nach dem Dateinamen. Mit Bitmap.SaveToFile speicherst du dann unter diesem Namen (falls SaveDialog.Execute True zurückgegeben hat).

GroZ 24. Sep 2015 10:48

AW: Paintbox mit SaveDialog speichern?
 
Hab XP :D Habe zwar immernoch Bluffering (wenn das so heißt) aber das zu beheben wäre für mich zu kompliziert. ^^

Na am liebsten wäre es das ich wenn ich auf Speichern drücke der Dialog kommt.

uligerhardt 24. Sep 2015 10:53

AW: Paintbox mit SaveDialog speichern?
 
Zitat:

Zitat von GroZ (Beitrag 1316831)
Hab XP :D Habe zwar immernoch Bluffering (wenn das so heißt) aber das zu beheben wäre für mich zu kompliziert. ^^

Meinst du Flickern?

Zitat:

Zitat von GroZ (Beitrag 1316831)
Na am liebsten wäre es das ich wenn ich auf Speichern drücke der Dialog kommt.

Naja, dann geht dein oben geposteter Code schon in die richtige Richtung. Nur was du hinter
Delphi-Quellcode:
if SaveDialog1.Execute then
hast, ist... überarbeitungsbedürftig. :mrgreen:

GroZ 24. Sep 2015 10:55

AW: Paintbox mit SaveDialog speichern?
 
procedure TForm1.Speichern1Click(Sender: TObject);
var Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.Width := Paintbox1.Width;
Bitmap.Height := Paintbox1.Height;

Bitmap.Canvas.CopyRect(Bounds(0,0,bitmap.Width, Bitmap.Height),
PaintBox1.Canvas, PaintBox1.ClientRect);
Bitmap.SaveToFile('Pfad\Test.bmp');
end;

Das wäre jetzt mit der Bitmap bloß ohne den Dialog :D

uligerhardt 24. Sep 2015 10:59

AW: Paintbox mit SaveDialog speichern?
 
Zitat:

Zitat von GroZ (Beitrag 1316833)
procedure TForm1.Speichern1Click(Sender: TObject);
var Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.Width := Paintbox1.Width;
Bitmap.Height := Paintbox1.Height;

Bitmap.Canvas.CopyRect(Bounds(0,0,bitmap.Width, Bitmap.Height),
PaintBox1.Canvas, PaintBox1.ClientRect);
Bitmap.SaveToFile('Pfad\Test.bmp');
end;

Das wäre jetzt mit der Bitmap bloß ohne den Dialog :D

Genau. Und das muss jetzt in das
Delphi-Quellcode:
if SaveDialog1.Execute then
begin
  // hier <<<<<<<<<<<<<<
end;
rein, weil es nur ausgeführt werden soll, wenn der Benutzer den Dialog mit OK beendet. Dann noch SaveDialog1.Filename verwenden und gut ist's.

(Vorausgesetzt, PaintBox.Canvas enthält immer noch, was es soll. Davon bin ich nach wie vor nicht überzeugt.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 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