![]() |
Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Hallo!
Ich habe erneut ein bzw. zwei riesige Probleme, bei denen ihr mir hoffentlich helfen könnt! Mein Zeichenpogramm hat einmal diese Prozedur
Code:
mit der man ein bmp-Bild laden kann und diese
procedure TForm1.Button5Click(Sender: TObject);
begin // .bmp-Bild laden if OpenPictureDialog1.Execute then Bitmap:=TBitmap.create; Bitmap.Width:=704; Bitmap.Height:=603; Bitmap.Canvas.Brush.Color:=ColorDialog1.Color; Bitmap.Canvas.Fillrect(Rect(0,0,704,603)); Bitmap.LoadFromFile(OpenPictureDialog1.FileName); BitBlt(Paintbox1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SrcCopy); Bitmap.Free; end;
Code:
mit der man das Gemalte Kunstwerk speichern kann.
procedure TForm1.Button4Click(Sender: TObject);
begin // Speichert den Inhalt der Paintbox an eine beliebige Stelle if SavePictureDialog1.Execute then Bitmap:=TBitmap.Create; Bitmap.PixelFormat := pf32bit; Bitmap.Width:=Paintbox1.Width; Bitmap.Height:=Paintbox1.Height; Bitmap.Canvas.CopyRect(Bounds(0,0,bitmap.Width, Bitmap.Height), PaintBox1.Canvas, PaintBox1.ClientRect); Bitmap.SaveToFile(SavePictureDialog1.FileName); Bitmap.Free; end; Nun habe ich folgende Probleme: 1. Wenn ich beim "Bild laden" bzw. "Bild speichern" auf abbrechen klicke kommt folgende Fehlermeldung: Zitat:
Für Hilfe wäre ich sehr dankbar! :) |
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Bei mehrern Befehlen im then oder else Teil diese mit begin..end umschliessen.
Wie ist die Endung des Dateinamnes? |
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Zusammengehörede Blöcke werden in Delphi mit begin und end umschlossen. Und jetzt guck dir deinen Quellcode noch mal an. Nach ausführen der Dialoge soll doch wohl mehr passieren als:
Delphi-Quellcode:
oder?
Bitmap:=TBitmap.create;
|
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Danke für die schnelle Antwort!
Das Ende des Dateinamens...naja, denn gibts nicht wirklich. Ich die Datei nur als weißes Blatt, der Dateityp ist laut Eigenschaften einfach nur "Datei". Ich kann dieses Ding aber mit z.B. Paint öffnen! |
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Du kannst diesen ja vorgeben. und ggf. die passende Endung anhängen
|
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Hm so weit so gut, ich weiß jetzt wo der Fehler liegt, aber ich weiß nicht so recht wie ich den Quellcode in die verschiedenen Blöcke einteilen soll :?
Code:
Is das so richtig? :pale:
procedure TForm1.Button5Click(Sender: TObject);
begin // .bmp-Bild laden if OpenPictureDialog1.Execute then begin Bitmap:=TBitmap.create; // Hier weise ich der var Bitmap ja ihre Eigenschaften zu, oder? Bitmap.Width:=704; Bitmap.Height:=603; Bitmap.Canvas.Brush.Color:=ColorDialog1.Color; // Hiermit wird der Hintergrund übermalt Bitmap.Canvas.Fillrect(Rect(0,0,704,603)); Bitmap.LoadFromFile(OpenPictureDialog1.FileName); // Hiermit lade ich die das Bild in die var Bitmap end; begin BitBlt(Paintbox1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SrcCopy); // Das ist die Anweisung zum Zeichnen des bmp-Bildes auf die Paintbox1 end; begin Bitmap.Free; // Und hiermit leere ich schließlich die var Bitmap end; end; Und mit der Dateienendung: Kann ich auch irgendwo festlegen, dass es von Anfang an eine bmp-Datei ist und nichts anderes sein kann und das ich nicht erst die Endung manuell hinzufügen muss? Schonmal danke im Voraus! |
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Jein, du musst nur Blöcke bilden, wenn diese notwendig sind.
Zudem vermute ich, das der komplette Code nur ausfeführt werden soll, wenn ein Bild im Dialog ausgewählt wurde
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin // .bmp-Bild laden if OpenPictureDialog1.Execute then begin Bitmap:=TBitmap.create; // Hier weise ich der var Bitmap ja ihre Eigenschaften zu, oder? Bitmap.Width:=704; Bitmap.Height:=603; Bitmap.Canvas.Brush.Color:=ColorDialog1.Color; // Hiermit wird der Hintergrund übermalt Bitmap.Canvas.Fillrect(Rect(0,0,704,603)); Bitmap.LoadFromFile(OpenPictureDialog1.FileName); // Hiermit lade ich die das Bild in die var Bitmap BitBlt(Paintbox1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SrcCopy); // Das ist die Anweisung zum Zeichnen des bmp-Bildes auf die Paintbox1 Bitmap.Free; // Und hiermit leere ich schließlich die var Bitmap end; end; |
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Okay super! Vielen Dank!
Bliebe nur noch das Problem mit dem abgespeicherten Bild, das keine .bmp ist. Die Datei ist zwar nicht unbrauchbar, dennoch ist es ziemlich unkomfortabel, sie erst durch manuelles Eingreifen zu einer .bmp.Datei zu machen! Wenn da jemand noch ne Lösung hätte wäre ich sehr sehr dankbar! |
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Schau dir mal ChangeFileExt() an
|
AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Wenn du das Bild über Bitmap (TBitmap) speicherst dann ist die Datei garantiert ein Bitmap.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz