unit Text;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TfmText = class(TForm)
    TurnTimer: TTimer;
    procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TurnTimerTimer(Sender: TObject);
  private
    { Private declarations }
    LogFontData: LOGFONT;
  public
    { Public declarations }
  end;

var
  fmText: TfmText;

implementation

{$R *.dfm}

procedure TfmText.FormPaint(Sender: TObject);
var
  hCurDC: HDC;
  hCurFont, hOldFont: HFONT;
  nOldMode: Integer;
  sText: String;
begin
  // получаем общий контекст устройства
  hCurDC := GetDC(Handle);
  // создаем шрифт из шаблона
  hCurFont := CreateFontIndirect(LogFontData);
  // выбираем созданный шрифт
  hOldFont := SelectObject(hCurDC, hCurFont);
  // устанавливаем новый режим вывода
  nOldMode := SetBkMode(hCurDC, TRANSPARENT);
  // устанавливаем цвет текста
  SetTextColor(hCurDC, RGB(0, 0, 255));
  // задаем текстовую строку
  sText := 'Текст примера';
  // выводим текст на экран
  TextOut(hCurDC, Width div 2, Height div 2, PAnsiChar(sText), Length(sText));
  // восстанавливаем режим вывода
  SetBkMode(hCurDC, nOldMode);
  // восстанавливаем ранее выбранный шрифт
  SelectObject(hCurDC, hOldFont);
  // удаляем созданный шрифт
  DeleteObject(hCurFont);
  // освобождаем общий контекст устройства
  ReleaseDC(Handle, hCurDC);
end;

procedure TfmText.FormCreate(Sender: TObject);
begin
  with LogFontData do
    begin
      lfHeight         := 30; // высота шрифта
      lfWidth          := 0;  // средняя ширина символа
      lfEscapement     := 0;  // наклон строки относительно оси oX
      lfOrientation    := 0;  // наклон символа относительно оси oX
      lfWeight         := FW_BOLD; // вес шрифта
      lfItalic         := 0;
      lfUnderline      := 0;
      lfStrikeOut      := 0;
      lfCharSet        := DEFAULT_CHARSET;     // кодовая страница по умолчанию
      lfOutPrecision   := OUT_DEFAULT_PRECIS;  // точность вывода
      lfClipPrecision  := CLIP_DEFAULT_PRECIS; // отсечение вывода
      lfQuality        := PROOF_QUALITY; // качество вывода
      lfPitchAndFamily := VARIABLE_PITCH or FF_DONTCARE; // семейство шрифта
      lfFaceName       := 'Arial'; // название шрифта
    end;
  TurnTimer.Enabled := True;
end;

procedure TfmText.TurnTimerTimer(Sender: TObject);
begin
  with LogFontData do
    begin
      lfEscapement  := lfEscapement + 60;
      lfOrientation := lfEscapement;
    end;
  RePaint;
end;

end.
