Показать сообщение отдельно
  #5  
Старый 21.02.2011, 09:37
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вариантов много:



Код:
function CreateCaptcha(s: String): TBitmap;
var
  i: Integer;
  x: Integer;
  y: Integer;
  a: Integer;

  procedure CanvasSetAngle(C: TCanvas; A: Single);
  var
    LogRec: TLogFont;
  begin
    GetObject(C.Font.Handle, SizeOf(LogRec), @LogRec);
    DeleteObject(C.Font.Handle);
    LogRec.lfEscapement:=Trunc(A*10);
    C.Font.Handle:=CreateFontIndirect(LogRec);
  end;

begin
  Result:=TBitmap.Create;
  Result.Canvas.Font.Name:='Comic Sans MS';
  Result.Canvas.Font.Size:=16;
  Result.Width:=2*Result.Canvas.TextWidth('W')*(Length(s)+2);
  Result.Height:=50;
  Result.Canvas.Brush.Color:=clWhite;
  Result.Canvas.FillRect(Rect(0, 0, Result.Width, Result.Height));
  Result.Canvas.Brush.Style:=bsClear;
  for i:=1 to 5*Result.Width do
  begin
    Result.Canvas.Pen.Color:=Random($ffffff);
    x:=Random(Result.Width);
    y:=Random(Result.Height);
    Result.Canvas.MoveTo(x, y);
    Result.Canvas.LineTo(x+Random(2), y+Random(2));
  end;
  x:=Result.Canvas.TextWidth('W');
  for i:=1 to Length(s) do
  begin
    a:=Random(90)-45;
    CanvasSetAngle(Result.Canvas, a);
    Result.Canvas.Font.Color:=Random($ffffff);
    Result.Canvas.TextOut(x, Result.Height div 2, s[i]);
    Inc(x, 2*Result.Canvas.TextWidth('W'));
  end;
  Result.Canvas.Pen.Color:=clBlack;
end;

http://data.cod.ru/90139
__________________
Пишу программы за еду.
__________________
Ответить с цитированием