Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Auf ein Image schreiben (https://www.delphipraxis.net/17744-auf-ein-image-schreiben.html)

dedeur 9. Mär 2004 10:35


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

Sanchez 9. Mär 2004 10:42

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:
  image.Picture.Bitmap.Canvas.TextOut(x, y, text);
[/EDIT]

sakura 9. Mär 2004 10:43

Re: Auf ein Image schreiben
 
Zauberwort: Hier im Forum suchenDrawText

...:cat:...

dedeur 9. Mär 2004 10:58

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

Matze 9. Mär 2004 11:01

Re: Auf ein Image schreiben
 
Lass das var weg und gibt anstelle von x und y die Koordinaten an.

Sanchez 9. Mär 2004 11:04

Re: Auf ein Image schreiben
 
Zitat:

Zitat von dedeur
[Fehler] UNIT1.PAS(153): Bezeichner erwartet, aber 'BEGIN' gefunden

Grund: du hast zwischen var und begin keine Variablen definiert

Zitat:

Zitat von dedeur
[Fehler] UNIT1.PAS(154): Undefinierter Bezeichner: 'x'

Grund: x, y und text sollte dir nur zeigen, was die Parameter bedeuten.

So soll es aussehen:

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
begin
  Image1.Picture.Bitmap.Canvas.TextOut(10 , 10, 'Ich bein eine Bildbeschriftung');
end;
Das schreibt dir den Text bei den Koordinaten 10,10.
Zum speichern des Bildes nimmst du:

Delphi-Quellcode:
  Image1.Picture.Bitmap.SaveToFile(DateiName);
grüße, daniel

dedeur 9. Mär 2004 11:39

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

Sanchez 9. Mär 2004 12:31

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:
  FTextPickMode := not FTextPickmode and (edText.Text <> '');
Wobei FTextPickMode ein boolean ist, dass du in der Klasse definieren musst.

Im OnMouseDown vom Image:
Delphi-Quellcode:
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;
Wenn du den Text direkt am Bild eintippen willst, dann wirds schon etwas komplizierter.
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:
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;
Das hab ich jetzt ohne testen mal hingetippt. Kann sein dass ich noch etwas vergessen hab.

grüße, daniel

dedeur 9. Mär 2004 12:48

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.

Sanchez 9. Mär 2004 12:48

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 04:32 Uhr.
Seite 1 von 4  1 23     Letzte »    

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