正如标题所要求的那样 - 我想知道我是否可以在我的注册表单中使用验证码验证(使用delphi 2010)
答案 0 :(得分:4)
使用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;
更改参数并尝试其他修改结果。 您可以获得如下图像:
问候。
答案 1 :(得分:2)
验证它只是一个带有一些文字的图形。所以,你可以制作一个图像,然后输出一些 文字就可以了。如果您需要更多信息,那么您需要更全面地描述 是什么让你制作一个你不理解的验证码。
也许您可以保留数据库表中所有可能单词的列表,然后传递 你的验证码功能中的单词的id号。这样你就有办法了 知道用户是否输入了正确的单词并根据需要进行补充检查。
您可以在此处了解如何在图像上绘制透明文字:
Writing Transparent Text on Image
互联网上有很多例子。
或者,您可以使用组件为您完成工作。
答案 2 :(得分:0)
也许你可以拨打Google recaptcha api。