![]() |
Auf ein Image schreiben
hallo NG
ich öffne auf einem Image ein bmp. dies möchte ich nun nachträglich etwas drauf schreiben. hat jemand tipps mfg |
Re: Auf ein Image schreiben
Hallo,
Einfach das Bitmap in ein TBitmap laden. Dann hast du einen Canvas und kannst nach herzenslust drauf schreiben, zeichnen, ... Dann wieder speichern grüße, daniel [EDIT]Hab grad gelesen, dass du es in einem TImage hast. Dort kannst du genauso auf den Canvas zugreifen.
Delphi-Quellcode:
[/EDIT]
image.Picture.Bitmap.Canvas.TextOut(x, y, text);
|
Re: Auf ein Image schreiben
|
Re: Auf ein Image schreiben
procedure TForm1.Button7Click(Sender: TObject);
var begin Image1.Picture.Bitmap.Canvas.TextOut(x , y, text); end; hab folgende fehler erhalten: [Fehler] UNIT1.PAS(153): Bezeichner erwartet, aber 'BEGIN' gefunden [Fehler] UNIT1.PAS(154): Undefinierter Bezeichner: 'x' [Fataler Fehler] project1.dpr(5): Verwendete Unit 'UNIT1.PAS' kann nicht compiliert werden ich erst den button click und dan erlauben auf der bmp zu schreiben. ich bin noch nicht solange dabei mit delphi7 kann mir nochmal geholfen werden :?: vielen dank im vorraus |
Re: Auf ein Image schreiben
Lass das var weg und gibt anstelle von x und y die Koordinaten an.
|
Re: Auf ein Image schreiben
Zitat:
Zitat:
So soll es aussehen:
Delphi-Quellcode:
Das schreibt dir den Text bei den Koordinaten 10,10.
procedure TForm1.Button7Click(Sender: TObject);
begin Image1.Picture.Bitmap.Canvas.TextOut(10 , 10, 'Ich bein eine Bildbeschriftung'); end; Zum speichern des Bildes nimmst du:
Delphi-Quellcode:
grüße, daniel
Image1.Picture.Bitmap.SaveToFile(DateiName);
|
Re: Auf ein Image schreiben
hat mir schon weitergeholfen ich will aber den text erst auf der bmp schreiben
und am besten wär wenn ich per mausklick bestimme wo der text erscheint gruß patrick |
Re: Auf ein Image schreiben
Hallo,
Am einfachsten wäre wohl, wenn ein Edit hast in das du zuerst den Text eingibst, einen Button (einen Speedbutton kannst du einrasten lassen) um in den "Text-am-Bild-platzieren-Modus" zu schalten. Im ButtonClick sagst du dann:
Delphi-Quellcode:
Wobei FTextPickMode ein boolean ist, dass du in der Klasse definieren musst.
FTextPickMode := not FTextPickmode and (edText.Text <> '');
Im OnMouseDown vom Image:
Delphi-Quellcode:
Wenn du den Text direkt am Bild eintippen willst, dann wirds schon etwas komplizierter.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if FPickMode then begin Image1.Picture.Bitmap.Canvas.TextOut(x , y, edText.Text); end; end; Am einfachsten ist es vermutlich ein Edit dort zu erzeugen, wo du den Text platzierst. Dafür könntest du in der Klasse ein TEdit FTempEdit definieren. Im OnMouseDown vom Image:
Delphi-Quellcode:
Das hab ich jetzt ohne testen mal hingetippt. Kann sein dass ich noch etwas vergessen hab.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if FPickMode then begin FTempEdit := TEdit.Create(self); FTempEdit.Parent := Image1; FTempEdit.OnExit := EditOnExit; end; end; procedure TForm1.EditOnExit(Sender : TObject); begin Image1.Picture.Bitmap.Canvas.TextOut(FTempEdit.Left , FTempEdit.Top, FTempEdit.Text); FreeAndNil(FTempEdit); end; grüße, daniel |
Re: Auf ein Image schreiben
hallo
habe folgendes eingehagt er compeliert auch, aber wenn ich im edit1 feld etwas reinschreibe und denn button klick tut sich nichts. muss mal ein lob an euch aussprechen ihr seid eine echte Hilfe auch wenns noch nit klappt :thuimb:
Code:
procedure TForm1.Button1Click(Sender: TObject); begin FTextPickMode := not FTextPickmode and (edit1.Text <> ''); end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if FPickMode then begin Image1.Picture.Bitmap.Canvas.TextOut(x , y, edit1.Text); end; end; end. |
Re: Auf ein Image schreiben
Mir kommt gerade so der Gedanke, dass es weniger schlau ist, das Edit im OnExit freizugeben.
Eventuell isses besser, wenn du gleich ein Edit auf das Formular ziehst und es invisible setzt. Wo ich es im Source vorher erzeugt hätte, setzt du es Visible und setzt die Position. Wo ich es zerstört hätte setzt du es wieder unsichtbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 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