
21.02.2011, 09:37
|
 |
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
__________________
Пишу программы за еду.
__________________
|