• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 11 رای - 2.73 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: ساخت Captcha
حالت موضوعی
#1
سلام
کلاس زیر یک نمونه ساده و خوب برای ساخت تصاویر captcha هستش.

[عکس: Ndebata_1402_WebCaptcha%20CD.PNG]
[عکس: Ndebata_5269_Final1.gif]



کد:
public class WebCaptcha
{
public string Value { get; set; }
public Image CaptchaImg { get; set; }
public bool CaseSensitive { get; set; }
private Random rndm;

public bool IsValid(string input)
{
return CaseSensitive?this.Value.Equals(input):this.Value.Equals(input, System.StringComparison.OrdinalIgnoreCase);
}

public WebCaptcha()
{
this.rndm = new Random();
char[] rmcarr = this.GetRandomCArr(6);
this.Value = new string(rmcarr);
this.CreateImage(rmcarr);
}

private void CreateImage(char[] rmcarr)
{
int FontSize = 20;
Bitmap bmp = new Bitmap(140, 55);
Graphics gImage = Graphics.FromImage(bmp);
gImage.FillRectangle(Brushes.WhiteSmoke, 0, 0, bmp.Width, bmp.Height);
//Draw lines
for (int i = 0; i < 200; i = i + 5)
{
gImage.DrawLine(Pens.LightGray, new Point(0, i + 5), new Point(i + 5, 0));
gImage.DrawLine(Pens.LightGray, new Point(0, 60 - (i + 5)), new Point(i + 5, 60));
}
//Draw random text
for (int i = 0; i < rmcarr.Length; i++)
{
gImage.DrawString(rmcarr[i].ToString(), new Font(FontFamily.GenericSansSerif, FontSize,FontStyle.Bold), GetRandomBrushes(), new PointF(5 + i * FontSize, 5 + (rndm.Next() % 2 == 0 ? 0 : 15)));
}
this.CaptchaImg = bmp;
}

//Get random char array
private char[] GetRandomCArr(int length)
{
var mch = Enumerable.Range(35, 2).Select(c => (char)c).Union(
Enumerable.Range(49, 9).Select(c => (char)c)).Union(
Enumerable.Range(64, 27).Select(c => (char)c)).Union(
Enumerable.Range(97, 26).Select(c => (char)c)).ToArray();
var mcstr = Enumerable.Range(1, length).Select(a => mch[rndm.Next() % mch.Length]).ToArray();
return mcstr;
}

//Get a random brush
private Brush GetRandomBrushes()
{
var mbrsharr = new Brush[] { Brushes.Blue,Brushes.BlueViolet, Brushes.Green, Brushes.Red,Brushes.Purple, Brushes.DarkGreen, Brushes.Brown, Brushes.Black };
return mbrsharr[rndm.Next() % mbrsharr.Length];
}
}
معبودا مرا ببخش، بخاطر درهایی که کوبیدم ولی هیچکدام خانه تو نبود ...
 
پاسخ
  


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ساخت نقشه سایت (asp.net) Amin_Mansouri 0 5,093 12-06-2012، 11:59 AM
آخرین ارسال: Amin_Mansouri
  سورس کد ساخت اعداد تصادفی (Asp.Net) Amin_Mansouri 0 6,208 06-17-2012، 09:26 AM
آخرین ارسال: Amin_Mansouri
  سورس کد ساخت یک پوشه (asp.net) Amin_Mansouri 0 5,141 05-02-2012، 12:54 PM
آخرین ارسال: Amin_Mansouri

پرش به انجمن:


Browsing: 1 مهمان