![]() |
Delphi-Version: 5
Speichern der Canvas
Hallo und guten Morgen.
Es tut mir wirklich leid dass ich euch wieder mal Störe und vielleicht auch nerve. Ich habe jetzt folgendes Problem: Ich möchte den Grapgen den ich gezeichnet habe Speichern, und Zwar so, dass ich mir den Speichpfad immer wieder selber aussuchen kann. Habe es bis jetzt so lösen können, dank google :):
Delphi-Quellcode:
Nur gibt mir der Compiler immer wieder an, dass SaveDialog.Execute ein undefinierter Bezeichner ist... Auch bei SaveDialog alleine.
procedure TForm1.btnSaveClick(Sender: TObject);
var Bitmap : TBitmap; begin if SaveDialog1.Execute then begin Bitmap:=TBitmap.Create; Try Bitmap.Width:=Image1.ClientWidth; Bitmap.Height:=Image1.ClientHeight; BitBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height, Image1.Canvas.Handle,0,0,SRCCOPY); Bitmap.SaveToFile(SaveDialog1.FileName + '.bmp'); Finally Bitmap.Free; end; end; end; Liebe Grüße |
AW: Speichern der Canvas
Befindet sich denn eine SaveDialog Komponente auf deinem Formular?
|
AW: Speichern der Canvas
Wie auf meinem Formular? muss ich das mit ins Formcreate schreiben??
|
AW: Speichern der Canvas
Komponentenpalette - Reiter Dialoge - TSaveDialog auswählen und aufs Formular damit.
|
AW: Speichern der Canvas
Sogar dafür bin ich zu doof -.-
|
AW: Speichern der Canvas
Wie bringst Du denn einen Button oder ein Edit auf Dein Formular? Genauso geht das auch mit dem Dialog, das ist eine ganz normale Komponente.
|
AW: Speichern der Canvas
ok habs jetzt ausn internet gesucht.... Jetzt weiß ich auch was idt, wenn ihr vom Formular sprecht :)
Zitat:
|
AW: Speichern der Canvas
Hättest Du doch einfach nachgefragt :zwinker:
|
AW: Speichern der Canvas
Hmmm... jetzt gibts eine Zugriffsverletzung...?
|
AW: Speichern der Canvas
Und wo genau?
|
AW: Speichern der Canvas
Delphi-Quellcode:
das markiert er rot wenn ich auf Anhalten klicke
if SaveDialog1.Execute then
|
AW: Speichern der Canvas
Das verstehe ich im Moment nicht, Dein Dialog wird ja wohl SaveDialog1 heißen, sonst würde ja gar nicht erst kompiliert werden. Bringt es etwas, wenn Du den Code ausschneidest, kompilierst und anschließend wieder einfügst?
|
AW: Speichern der Canvas
Tut sich nichts.... wenn ich den im laufenden Programm wieder einfüge und dann Klicke macht er garnichts
Zitat:
|
AW: Speichern der Canvas
Ist die Komponente denn auf dem Formular zu sehen? Im Moment scheint es eher so, als hättest Du sie händisch in die Unit eingefügt.
|
AW: Speichern der Canvas
Zitat:
Ich find die nicht -.- och manno:( |
AW: Speichern der Canvas
Schau doch in die Komponentenpalette, da muss es einen Reiter "Dialoge" geben. Auf diesem sollte der SaveDialog zu finden sein. Ist der Reiter nicht da, sind vermutlich nicht alle Packages geladen.
|
AW: Speichern der Canvas
Nee, woher bekomm ich das jetzt?? das ist doch echt zum :kotz:
|
AW: Speichern der Canvas
Habe es gefunden... er hat jetzt eine neue Unit geöffnet. Ist das so richtig?
|
AW: Speichern der Canvas
Falls Du den Begriff Komponentenpalette falsch verstanden haben solltest, findest Du
![]() [edit] Neue Unit? Nee, das sollte eigentlich nicht sein. Nimm doch den Dialog wie einen Button o.ä. einfach und platziere ihn auf dem Formular, das ist alles. [/edit] |
AW: Speichern der Canvas
Man bin ich bescheuert!!!!
Habs jetzt... und es Funktioniert auch!! Wie kann ein Mensch nur sooo bescheuert sein. Habe immer inner Palette geguckt während ich im QT war :oops:sowas dummes danke Deddyh |
AW: Speichern der Canvas
Gibt es dieses SaveDialog auch fürs Speichern von JPG-Dateien?
Will das irgendwie umändern dass es als jpg gespeichert wird |
AW: Speichern der Canvas
Der Dialog hat mit dem Dateiformat nichts zu tun. Er dient nur dazu einen Pfad und Dateinamen auszuwählen, nicht mehr und nicht weniger.
Wenn du das Bitmap als JPEG speichern willst, musst du es vorher in das JPEG Format umwandeln. Dazu solltest du genug Beispielcode hier im Forum finden. |
AW: Speichern der Canvas
OK, dann versuche ich es mal... dann brauch ich ja auch keine extra Funktion oder Prozedur wenn ich das einfach "ersetzen" kann sozusagen, habe ich das so richtig verstanden? also nach dem Code seh ich mich gleich mal um :)
PS: ja umwandeln... also doch eine extra Sache.... also ist der erste satz von diesem Beitrag mal bitte zu übersehen ;) |
AW: Speichern der Canvas
Kann man das nicht einfach so machen:
Delphi-Quellcode:
Wobei
procedure TForm1.btnSaveClick(Sender: TObject);
var // Bitmap : TBitmap; jpg: TJpegImage; begin if SaveDialog1.Execute then begin jpg:=TJpegImage.Create; Try jpg.Width:=Image1.ClientWidth; jpg.Height:=Image1.ClientHeight; BitBlt(jpg.Canvas.Handle,0,0,jpg.Width,jpg.Height, //jpg.Canvas.Handle geht nicht Image1.Canvas.Handle,0,0,SRCCOPY); jpg.SaveToFile(SaveDialog1.FileName + '.jpg'); Finally ShowMessage('Gespeichert!'); jpg.Free; end; end; end;
Delphi-Quellcode:
niht funkrioniert!?
jpg.Canvas.Handle
|
AW: Speichern der Canvas
Statt dem BitBlt mach mal einfach:
Delphi-Quellcode:
jpg.Assign(Image1.Picture.Bitmap);
|
AW: Speichern der Canvas
Aber was pasiert mit
Delphi-Quellcode:
? Muss das ganz weg?
jpg.Canvas.Handle
Habe es jetzt so
Delphi-Quellcode:
jpg.Assign(Image1.Picture.Bitmap)(jpg.Canvas.Handle,0,0,jpg.Width,jpg.Height, //jpg.Canvas.Handle geht nicht
Image1.Canvas.Handle,0,0,SRCCOPY); |
AW: Speichern der Canvas
Sorry, ich meinte natürlich den ganzen BitBlt. Auch die beiden Zeilen mit der Größenzuweisung können weg.
|
AW: Speichern der Canvas
Alles klärchen:thumb::thumb:
|
AW: Speichern der Canvas
Zitat:
|
AW: Speichern der Canvas
Mal dein Canvas auf ein Bitmap, erstelle ein JPEG, Assigne das Bitmap und speicher das JPEG.
|
AW: Speichern der Canvas
Ungetestet:
Delphi-Quellcode:
procedure TForm1.btnSaveClick(Sender: TObject);
var jpg: TJpegImage; begin if SaveDialog1.Execute then begin jpg := TJpegImage.Create; Try jpg.Assign(Image1.Picture.Bitmap); jpg.SaveToFile(ChangeFileExt(SaveDialog1.FileName, '.jpg')); ShowMessage('Gespeichert!'); Finally jpg.Free; end; end; end; |
AW: Speichern der Canvas
Ganz genau das wollte ich... Naja wäre nur ein kleiner trotzdem schwerer Schritt gewesen!
Wüsste echt nicht was ich ohne euch machen sollte!! DANKE EUCH! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 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