Escrever texto na diagonal

Esta rotina é muito útil para quem desenvolve um gerador de relatórios próprio ou manipula imagens inserindo textos de marca dágua. As aplicações são infinitas e o resultado final é muito satisfatório.

Preparando os componentes

Para utilizar este método, você precisa incluir em seu formulário, que aqui chamamos de Form1, um MaskEdit, um Image e um Button. Defina a máscara do MaskEdit1 como 999;1;_ e no evento FormCreate do Form1, defina o tamanho da imagem Bitmap do Image1.

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Picture.Bitmap.Width := 500;
  Image1.Picture.Bitmap.Height := 500;
end;

Utilizando o método

O código abaixo deve ser associado ao evento OnClick do Button1.

procedure TForm1.Button1Click(Sender: TObject);
var
  LogFont: TLogFont;
  aFont: TFont;
begin
  with Image1.Picture.Bitmap.Canvas do
  begin
    Font.Name := 'Arial';
    Font.Size := 24;
    aFont := TFont.Create;
    aFont.Assign(Font);
    GetObject(aFont.Handle, SizeOf(LogFont), @LogFont);
    LogFont.lfEscapement := IntToStr(MaskEdit1.Text);
    LogFont.lfOrientation := IntToStr(MaskEdit1.Text);
    aFont.Handle := CreateFontIndirect(LogFont);
    Font.Assign(aFont);
    FreeAndNil(aFont);
    TextOut(Width div 2, Height div 2, 'Texto Diagonal!');
  end;
end;

Conclusão
Este código escreve um texto no Image1 baseado no ângulo colocado em MaskEdit1. O nome e o tamanho da fonte podem ser alterados dinâmicamente caso haja necessidade. Você também pode limpar a imagem cada vez que for “pintar” o texto.