![]() |
Selbstgemaltes Bild Abspeichern
Hallo zusammen!
Ich habe von der Schule aus mit Delphi angefangen und bin noch recht neu. Wir mussten ein eigenes Paint programmieren was auch schon sehr gut funktionmiert hat. Nun möchte ich das selbstgemalte Bild aber auch Abspeichern können. Aber wie? ich habe mich hier im Forum schon danach umgesehen aber irgentwie nur teile gefunden und wie ich schon erwähnt habe bin ich noch recht neu. Also kann mir jemand erklären wie ich ein Bild Abspeichern kann, so dass auch ich es verstehe? Fals es wichtig ist gemalt wird bei meinem Paint einfach mit Canvas.lineto (X,Y) in FormMouseMove. danke schonmal im Vorraus. |
Re: Selbstgemaltes Bild Abspeichern
Wenn du direkt auf das Formular gezeichnet hast, dann ist das mit dem Speichern nicht einfach.
Du könntest allerhöchstens folgendes Probieren:
Delphi-Quellcode:
Ansonsten würde ich dir empfehlen deine Grafikausgabe direkt auf ein Bitmap zu machen.
var bitmap:TBitmap;
begin bitmap := TBitmap.Create; bitmap.width := canvas.width; bitmap.height := canvas.height; canvas.copyrect(rect(0,0,canvas.width,canvas.height),bitmap.cavnas, clientrect) bitmap.savetofile('blabla.bmp'); bitmap.free; end; [EDIT] Uups. Hab gar nicht gesehen das du das mit .NET machen willst. Da kenne ich mich nicht aus... |
Re: Selbstgemaltes Bild Abspeichern
Funktioniert so auch leider nicht der Speichert zwar ein Bitmap, aber nur eine weisse Fläche aber nicht das was ich gemalt hab.
Trotzdem danke. Ich werde es weiter versuchen und hoffe dass jemand die Lösung findet. |
Re: Selbstgemaltes Bild Abspeichern
Konnte nicht funktionieren, habe ein wenig mist gebaut:
Delphi-Quellcode:
So geht es!
procedure TForm1.Button1Click(Sender: TObject);
var bitmap:TBitmap; begin bitmap := TBitmap.Create; bitmap.width := clientrect.Right; bitmap.height := clientrect.Bottom; bitmap.canvas.copyrect(clientrect,Canvas, clientrect); bitmap.savetofile('c:\test.bmp'); bitmap.free; end; Das einzige Problem ist, das alle Schaltflächen usw. mit gespeichert werden. Um dies zu vermeiden musst du bei bitmap.canvas.copyrect(clientrect,canvas, rect(hier, muss, dein, quell-rechteck rein)). |
Re: Selbstgemaltes Bild Abspeichern
HI
Ich hab das auch ma kurz probiert mit dem Speichern. Nur ich versteh das nicht ganz, wie das mit dem Quellrechteck funktioniert. Wenn man das so macht, wie das jetzt da steht speichert man ja alles mit. Vielen Dank schonma im vorraus |
Re: Selbstgemaltes Bild Abspeichern
Schonmal vielen dank!
Soweit so gut aber leider weiss ich erlich gesagt auch nicht, wie man die schaltflächen aus dem gespeicherten bild bekommt. Wenn mir das jemand sagen könnte wäre ich eigentlich zufrieden :-D |
Re: Selbstgemaltes Bild Abspeichern
Wieso zeichnest du denn dann direkt auf dem Canvas des Formulars? Wäre es nicht sinnvoller, zum Beispiel ein TImage zu nehmen und darauf zu zeichnen? MS-Paint besitzt auch eine extra Zeichenfläche. ;)
|
Re: Selbstgemaltes Bild Abspeichern
Ich würde dir auch emfehlen zum beispiel ein Image zu nehmen . DA kannst du auch direkt aufs canvas zeichnen. dann kannst du aber dieses abspeichern - das is dann einfacher!
Probier mal aus - Ich hab auch schon mal nen Prog geschrieben - zum demonstieren wie so was funzt eignet es sich nur mittelmäßig - leicht unübersichtlich aber ich kann - wenn du willst es als anhang stellen! LG Stefan |
Re: Selbstgemaltes Bild Abspeichern
Ich habe die sache mit dem Image auch schon versucht, um den Fehler zu beheben, dass "überploppende" fenster das gemalte löschen aber der hat dann nicht mehr gemalt.
Ich habe es mit Image1.Canvas.lineto(x,y) probiert ist das Falsch? |
Re: Selbstgemaltes Bild Abspeichern
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
du könntest es natürlich intern auf ein Bitmap zeichnen und per ![]() |
Re: Selbstgemaltes Bild Abspeichern
Es klappt!!!
Ich kann speichern vielen dank. aber es hat sich ein neues Problem aufgetan :wall: . Das TImage Element macht nicht was ich will: wenn ich einmal darauf gemalt habe behält es seine größe und lässt sich nicht mehr mit der Größe des Fensters ändern. Warum? |
Re: Selbstgemaltes Bild Abspeichern
ich glaube du musst dann das bewusst erweitern - also die zeichnefläche manuell vergrößern!
Ich guck noch mal genauer nach - LG Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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 by Thomas Breitkreuz