![]() |
|
#5
|
||||
|
||||
![]() вариантов много:
![]() Код:
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 Пишу программы за еду. __________________ |