| Autor |
Beitrag |
Vaio
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: Mo 28.11.05 17:45
Wir haben im Informatikunterricht ein Malprogramm programmiert. Ich habe heute versucht mit meinem Kollegen die Bilder abzuspeichern, leider erfolglos. Danach haben wir den Lehrer gefragt und erwidert nur, dass das sehr schwer sei, weil man jeden einzelnen Pixel speichern müsste.
Meine Frage ist jetzt, wie länge wäre so ein Programmiercode zum Speichern eines Bildes? Vielleicht wäre es für euch hilfreich zu wissen wie das Malprogramm aufgebaut ist. Also oben ist ein Panel mit allen Buttons für die verschiedenen Funktionen und da drunter kann gemalt werden.
Ginge das nicht nach dem Prinzip:
Form1.Canvas (SaveToFile)
oder so ähnlich?
Danke schon mal für eure Hilfe! Moderiert von Christian S.: Topic aus Sonstiges verschoben am Mo 28.11.2005 um 18:05
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 28.11.05 17:57
Mal nicht auf die Form, sondern auf ein TImage und speichere mit Image1.Picture.SaveToFile();.
Andere Möglichkeit: Erstelle ein TBitmap, zeichne darauf beim Speichern das Bild des Form1.Canvas und speichere das Bitmap.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 28.11.05 18:06
Hallo!
Bitte passe den Titel Deines Threads an, da es hier nicht wirklich um den SavePictureDialog zu gehen scheint. Vielen Dank!
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: Mo 28.11.05 18:10
Wo muss ich denn den Befehl Image1.Picture.SaveToFile einfügen?
Bei SavePictureDialog gibt es mehrere Ereignisse.
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 28.11.05 18:16
Also meine Möglichkeit war jetzt ohne den PictureDialog, da ich den noch nie benutzt habe.
Image1.Picture.SaveToFile muss z.B. in OnButtonClick des Speicher-Buttons.
Kannst aber auch den SaveDialog benutzen und dann nach Excute mit SaveDialog.Filename speichern.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Sinspin
      
Beiträge: 1340
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Mo 28.11.05 19:33
ich denke das das so reichen müsste. es kann sein das da fehler drinne sind weil ich das jetzt im texteditor geschrieben habe.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.SaveImage; begin if savePictureDialog1.Execute=true then begin image1.Picture.SaveToFile(savePictureDialog1.fileName); end; end; |
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mo 28.11.05 19:35
das =true kannste weglassen ansonsten siehts richtig aus..
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 28.11.05 19:43
begin und end kann auch noch weg. 2 Zeilen für so etwas "schweres" wie dein Lehrer meint  .
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Vaio 
      
Beiträge: 32
Win XP Home
D7 Prof
|
Verfasst: Mo 28.11.05 21:39
Das klappt irgendwie nicht! Muss ich jetzt erstmal ein Image erstellen? Und wo muss ich diese Prozedur einfügen? Ich habe jetzt nur einen Button der den SavePictureDialog öffnet, brauche ich noch einen weiteren oder erledigt das die Prozedur?
Delphi zeigt ganze Zeit an, dass SaveImage ein Undefinierter Bezeichner sei! Was jetzt?
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mo 28.11.05 21:45
natürlich musste ein image erstellen wie willst du sonst was speichern??
aber ich glaub das hier ist erst mal besser für dich anzuschauen:
Crashkurs Delphi
und
Delphi Source
und
Delphi Basics für diverse Befehle
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 28.11.05 21:45
1. Du brauchst ein TImage auf der Form.
2. Das was oben zwischen begin und end steht, tuste in OnClick des Speicher-Buttons.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Sinspin
      
Beiträge: 1340
Erhaltene Danke: 120
Win 10
RIO, CE, Lazarus
|
Verfasst: Di 29.11.05 20:43
@Vaio:
tschuldige das ich mich so deutlich ausdrücke, aber ich hätte eben beim lesen beinahe meinen kopf *mit viel schwung* auf den tisch *sinken* lassen.
ich verstehe einfach nicht wie ihr es geschafft habt ein malprogramm zu schreiben wenn der lehrer nicht einmal weiß wie man das bild dann speichern kann!
du hast also den button mit dem du das bild speichern willst. von mir aus Button1. du machst nun im desinger einen doppelclick auf diesen button. in deinem quelltexteditor hast du nun in etwa folgendes:
Delphi-Quelltext 1: 2: 3: 4:
| procedure Form1.Button1Click(Sender: TObject); begin
end; |
darin hast du wie du schon erwähnt den aufruf deines bild speichern dialoges, also in etwa sowas:
(ich lege wert auf ordentliche und übersichtlige programmierung, daher nutzte ich hier mal die volle *geschwätzigkeit* von objectpascal aus)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure Form1.Button1Click(Sender: TObject); begin if savePictureDialog1.Execute=true then begin end; end; |
nun zum schwierigeren teil, das speichern des bildes. da kommt die frage auf wohin du dein bild gezeichnet hast.
wenn euch der lehrer auf das formular hat zeichnen lassen möchte ich den lehrer liebend gerne mal kennen lernen. dann würde ich nämlich gerne seinen job übernehmen damit sowas nie wieder passiert!
für zeichnen auf ein image:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure Form1.Button1Click(Sender: TObject); begin if savePictureDialog1.Execute=true then begin image1.Picture.SaveToFile(savePictureDialog1.fileName); end; end; |
für zeichen auf dem formular!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var bmp:TBitmap; sdRect:TRect;
begin try bmp:=TBitmap.Create; bmp.PixelFormat:=pf32bit; bmp.Width:=form1.ClientWidth; bmp.Height:=form1.ClientHeight; sdRect:=Rect(0,0,form1.ClientWidth,form1.ClientHeight); bmp.Canvas.CopyRect(sdRect,form1.Canvas,sdRect); if savePictureDialog1.Execute=true then begin bmp.SaveToFile(SavePictureDialog1.FileName); end; finally bmp.Free; end; end; |
ich hoffe doch einmal das das alle deine probleme lößen hilft.
|
|