首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用System.Drawing在.net中创建Captcha

使用System.Drawing在.net中创建Captcha
EN

Stack Overflow用户
提问于 2015-10-27 09:56:51
回答 1查看 1.7K关注 0票数 4

我已经在c#中生成了6位数字字母数字文本,现在我需要将它显示为图像。为此,我在Bitmap中使用了Graphics和.Net。

因此,我可以得到图像,但我需要一些小的改变,在字体的图像,就像我们在Captcha挑战锯齿类的东西,使它有点难以阅读。

这是我的密码。

代码语言:javascript
复制
Bitmap bmp = new Bitmap(100, 30);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Navy);
string randomString = CaptchaImageResult.GetCaptchaString(6);
g.DrawString(randomString, new Font("Courier", 16), 
             new SolidBrush(Color.WhiteSmoke), 2, 2);
HttpResponse response = System.Web.HttpContext.Current.Response;
response.ContentType = "image/jpeg";
bmp.Save(response.OutputStream, ImageFormat.Jpeg);
bmp.Dispose();
new CaptchaChallenge { Captcha = bmp };

更新..。

我试过用这个代码,但字母不清楚。

代码语言:javascript
复制
 Brush zigzagBrush = new System.Drawing.Drawing2D.HatchBrush(
                         System.Drawing.Drawing2D.HatchStyle.ZigZag, Color.White);
 g.DrawString(randomString, new Font("Courier", 16), zigzagBrush, 2, 2);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 11:38:19

一个舱口刷覆盖会更好:

代码语言:javascript
复制
Bitmap bmp = new Bitmap(100, 30);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Navy);
g.DrawString(code, new Font("Courier", 16),
                     new SolidBrush(Color.WhiteSmoke), 2, 2);
g.FillRectangle(new HatchBrush(HatchStyle.BackwardDiagonal, Color.FromArgb(255,0,0,0),Color.Transparent), g.ClipBounds );
g.FillRectangle(new HatchBrush(HatchStyle.ForwardDiagonal, Color.FromArgb(255, 0, 0, 0), Color.Transparent), g.ClipBounds);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33364727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档