Hola wolfran_hack.
Otra opción:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Color := clSilver; Edit1.Font.Name := 'Segoe Print';
Edit1.Font.Size := 12;
Edit1.Font.Style := Edit1.Font.Style + [fsBold];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
bm : TBitmap;
cc : TControlCanvas;
sz : TSize;
begin
bm := Image1.Picture.Bitmap;
cc := TControlCanvas.Create;
try
cc.control := Edit1;
cc.Font.Assign(Edit1.Font);
bm.Width := cc.ClipRect.Right;
bm.Height := cc.ClipRect.Bottom;
GetTextExtentPoint32(cc.Handle, PChar(Edit1.Text), Length(Edit1.Text), sz);
BitBlt(bm.Canvas.Handle, 0, 0, sz.cx, sz.cy, cc.Handle, 0, 0, SRCCOPY);
finally
cc.free;
end;
end;
(*) El color
clSilver es a fin de resaltar el área de lo copiado.
Salida:
Saludos