使用 Image 控件并绘制不同的元素来获取 Captcha。
您可以使用如下代码绘制一些字母:
procedure TForm1.letrasAnguladas(c : string; angulo : integer; nextPos : Integer);
var
logfont:TLogFont;
font: Thandle;
begin
LogFont.lfheight:=30;
logfont.lfwidth:=10;
logfont.lfweight:=900;
LogFont.lfEscapement:=angulo;
logfont.lfcharset:=1;
logfont.lfoutprecision:=OUT_TT_ONLY_PRECIS;
logfont.lfquality:= DEFAULT_QUALITY;
logfont.lfpitchandfamily:= FF_SWISS;
logfont.lfUnderline := 0;
logfont.lfStrikeOut := 0;
font:=createfontindirect(logfont);
Selectobject(Image1.canvas.handle,font);
SetTextColor(Image1.canvas.handle,rgb(0,180,0));
SetBKmode(Image1.canvas.handle,transparent);
Image1.canvas.textout(nextPos,Image1.Height div 3,c);
SetTextColor(Image1.canvas.handle,rgb(Random(255),Random(255),Random(255)));
deleteobject(font);
end;
你可以这样使用它:
for vX := 1 to Length(strCaptcha) do
letrasAnguladas(strCaptcha[vX],Random(600)+1,25*vX-15);
最后,您可以使用类似以下的代码在验证码中添加一些行:
for i := 0 to 15 do begin
Image1.Canvas.Pen.Color := Random(100000);
Image1.Canvas.MoveTo(random(Image1.Width), random(Image1.Height));
Image1.Canvas.LineTo(random(Image1.Width), random(Image1.Height));
end;
更改参数并尝试其他修改结果。
您可以像这样获取一些图像:
问候。