quarta-feira, 14 de março de 2007

Convertendo Texto em Imagem

Esta é uma dica bastante interessante para geração de imagens para validação, por exemplo. Através de uma procedure, você poderá montar uma imagem com o texto que quizer, com opção de grau de inclinação, e ainda poderá salvá-la.

Veja abaixo o código da procedure:

procedure ConvTextOut(CV: TCanvas; const sText: String; x, y, angle:integer);
var
LogFont: TLogFont;
SaveFont: TFont;
begin
SaveFont := TFont.Create;
SaveFont.Assign(CV.Font);
GetObject(SaveFont.Handle, sizeof(TLogFont), @LogFont);
with LogFont do
begin
lfEscapement := angle *10;
lfPitchAndFamily := FIXED_PITCH or FF_DONTCARE;
end;
CV.Font.Handle := CreateFontIndirect(LogFont);
SetBkMode(CV.Handle, TRANSPARENT);
CV.TextOut(x, y, sText);
CV.Font.Assign(SaveFont);
SaveFont.Free;
end;

Para usá-la, você precisa passar o Canvas de destino, ou seja, onde seu texto será desenhado. Qualquer componente que possua a propriedade Canvas poderá ser utilizado para tal, como o próprio form, e até um TImage, que nos permitirá salvar a imagem. Veja:

No Form:

  ConvTextOut(Canvas, Edit1.Text, 10, 70, 0);

No TImage:

  ConvTextOut(Image1.Canvas, Edit1.Text, 20, 10, 315);
Image1.Picture.SaveToFile('C:imagem.bmp');

Para testar, adicionei um Edit, bois Buttons e um TImage, programando cada um dos códigos acima do seu respectivo botão. O resultado foi como a figura abaixo:


Figura 1 - Resultado da Conversão de Texto em Imagem


2 comentários:

desconhecido disse...

deve ser declarado na seção uses a unit GRAPHICS para que o TCanvas seja achado pelo delphi.

Anônimo disse...

Olá, não está aparecendo a imagem do seu exemplo, valeu

Neobux