AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Zwei Probleme mit OpenPictureDialog und SavePictureDialog
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Probleme mit OpenPictureDialog und SavePictureDialog

Ein Thema von delphianfänger123 · begonnen am 4. Jan 2011 · letzter Beitrag vom 4. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#1

Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:15
Hallo!

Ich habe erneut ein bzw. zwei riesige Probleme, bei denen ihr mir hoffentlich helfen könnt!
Mein Zeichenpogramm hat einmal diese Prozedur
Code:
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;
mit der man ein bmp-Bild laden kann und diese
Code:
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;
mit der man das Gemalte Kunstwerk speichern kann.

Nun habe ich folgende Probleme:
1. Wenn ich beim "Bild laden" bzw. "Bild speichern" auf abbrechen klicke kommt folgende Fehlermeldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0042217C in Modul 'Project2.exe'. Lesen von Adresse 00000028'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
2.Wenn ich ein Bild speichere, dann wird es nicht als .bmp-Bild gespeichert. Wie bekomme ich es hin, das Bild als .bmp zu speichern?

Für Hilfe wäre ich sehr dankbar!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:18
Bei mehrern Befehlen im then oder else Teil diese mit begin..end umschliessen.

Wie ist die Endung des Dateinamnes?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:20
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:
Bitmap:=TBitmap.create; oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#4

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:23
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:24
Du kannst diesen ja vorgeben. und ggf. die passende Endung anhängen
Markus Kinzler
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#6

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:46
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:
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;
Is das so richtig?

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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 21:56
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;
Markus Kinzler
  Mit Zitat antworten Zitat
delphianfänger123

Registriert seit: 2. Jan 2011
15 Beiträge
 
#8

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 22:03
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 22:04
Schau dir mal ChangeFileExt() an
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#10

AW: Zwei Probleme mit OpenPictureDialog und SavePictureDialog

  Alt 4. Jan 2011, 22:06
Wenn du das Bild über Bitmap (TBitmap) speicherst dann ist die Datei garantiert ein Bitmap.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.
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