Problem beim Speichern eines Timage

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
ddog
Beiträge: 18
Registriert: Di 6. Jan 2009, 08:32
OS, Lazarus, FPC: Mac OSX 10.9 (L 1.0.14 FPC 2.6.2)

Problem beim Speichern eines Timage

Beitrag von ddog »

Hallo,

ich hab erst vor kurzem mit Lazarus zu Programmieren begonnen und steh jetzt vor einem Problem. Ich hab ein Timage mit einem PNG Bild. Darauf zeichne ich mit einem Buttonclick eine Linie per Image1.Canvas.Line(10,10,80,10);. Mit einem zweiten Button möchte ich das Bild mit der gezeichneten Linie speichern per Image1.Picture.Bitmap.SaveToFile('test.png');. Nur leider funktioniert das nicht. Wenn ich Button1 zum Zeichnen der Linie drücke, dann erscheint meine Linie, drücke ich nun Button zwei zum Speichern, verschwindet die Linie wieder und test.png ist ohne Linie. Erst wenn ich das mit den Buttons ein zweites Mal mache, dann zeigt mir test.png die Linie. Auf dem Bildschirm ist die Linie aber fast nicht zu erkennen und sieht aus als ob sie hinter dem Bild liegen würde.

lg
ddog

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Re: Problem beim Speichern eines Timage

Beitrag von bembulak »

Hi,

ich bin zwar auch nicht firm, aber ich würde versuchen, Bild wie auch Linie auf eine Paintbox zu malen und die Paintbox dann zu speichern. Es geht sicher auch anders, aber da musst du auf Schlauere als mich warten. ;)

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Problem beim Speichern eines Timage

Beitrag von shokwave »

Hallo,

also ich habs grad mal unter Vista32 und 'ner nicht ganz taufrischen 0.9.27 probiert. Bei mir klappt's ohne Probleme.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Canvas.Brush.Color:=clblack;
  Image1.Canvas.Pen.Color:=clwhite;
  Image1.Canvas.Line(10,10,80,10);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Image1.Picture.Bitmap.SaveToFile('D:\Temp\test.png');
end;


Welche Version/welches BS hast du?
mfg Ingo

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Problem beim Speichern eines Timage

Beitrag von theo »

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.Bitmap.Canvas.Brush.Color:=clblack;
  Image1.Picture.Bitmap.Canvas.Pen.Color:=clwhite;
  Image1.Picture.Bitmap.Canvas.Line(10,10,80,10);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Image1.Picture.Graphic.SaveToFile('test.png');
end;

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Problem beim Speichern eines Timage

Beitrag von Socke »

theo hat geschrieben:

Code: Alles auswählen

procedure TForm1.Button2Click(Sender: TObject);
begin
  Image1.Picture.Graphic.SaveToFile('test.png');
end;

Ich wollte gerade fragen, warum ihr ein (Windows-)Bitmap in eine Datei mit png-Erweiterung speichert... (Dateinamen sind zwar eig. egal, aber wenn ihr das so wie theo macht, siehts besser aus (man könnte auch Picture.PNG.SaveToFile() verwenden).

Alternativ könnte man aber auch direkt auf den Canvas des Bitmaps zeichnen:

Code: Alles auswählen

with Image1.Picture.Bitmap.Canvas do begin
  Line(10,80,80,10);
end;


MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

ddog
Beiträge: 18
Registriert: Di 6. Jan 2009, 08:32
OS, Lazarus, FPC: Mac OSX 10.9 (L 1.0.14 FPC 2.6.2)

Re: Problem beim Speichern eines Timage

Beitrag von ddog »

Vielen Dank, hat mir sehr geholfen! Jetzt funktioniert alles wie es soll! Ich bin froh, dass ich dieses Forum gefunden hab, sonst hätt ich Lazarus wohl schon wieder von der Platte gelöscht!

lg
ddog

Antworten