Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Selbstgemaltes Bild Abspeichern (https://www.delphipraxis.net/62908-selbstgemaltes-bild-abspeichern.html)

M4rv 11. Feb 2006 10:18


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.

igel457 11. Feb 2006 11:13

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:
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;
Ansonsten würde ich dir empfehlen deine Grafikausgabe direkt auf ein Bitmap zu machen.

[EDIT] Uups. Hab gar nicht gesehen das du das mit .NET machen willst. Da kenne ich mich nicht aus...

M4rv 11. Feb 2006 18:58

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.

igel457 12. Feb 2006 10:13

Re: Selbstgemaltes Bild Abspeichern
 
Konnte nicht funktionieren, habe ein wenig mist gebaut:
Delphi-Quellcode:
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;
So geht es!

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)).

sushiman 12. Feb 2006 11:27

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

M4rv 12. Feb 2006 20:43

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

Matze 12. Feb 2006 20:44

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. ;)

Light 12. Feb 2006 20:58

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

M4rv 13. Feb 2006 15:32

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?

Matze 13. Feb 2006 15:50

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 Delphi-Referenz durchsuchenDraw auf dem Image darstellen, doch ist dies eigentlich nicht nötig. Bei mir funktioniert es auch so (s. Anhang).


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.
Seite 1 von 2  1 2      

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