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:
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