Exemplo n.º 1
0
        /// <summary>
        /// Method  to generate captcha.
        /// </summary>
        public void MakeCaptcha()
        {
            string[] fontNames = new string[]
            {
                "Comic Sans MS",
                "Arial",
                "Times New Roman",
                "Georgia",
                "Verdana",
                "Geneva"
            };
            FontStyle[] fontStyles = new FontStyle[]
            {
                FontStyle.Bold,
                FontStyle.Italic,
                FontStyle.Regular,
            };

            txt.Clear();
            fonts.Clear();
            brushes.Clear();
            lines.Clear();
            Random rand = new Random();
            int rnd;

            // chars [48 - 122]
            for (int i = 0; i < 8; ++i)
            {
                rnd = rand.Next(48, 122);
                if ((rnd >= 91 && rnd <= 96) || (rnd >= 58 && rnd <= 64))
                {
                    --i;
                    continue;
                }

                this.txt.Append((char)rnd);
                this.fonts.Add(new Font(fontNames[rand.Next(fontNames.Count())], (float)rand.Next(20, 25), fontStyles[rand.Next(fontStyles.Count())]));
                this.brushes.Add(new SolidBrush(Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255))));
            }

            Line toPush;
            for (int i = 0; i < 10; ++i)
            {
                toPush = new Line();
                toPush.Cl = Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255));
                toPush.X = new Point(rand.Next(pnl.Width), rand.Next(pnl.Height));
                toPush.Y = new Point(rand.Next(pnl.Width), rand.Next(pnl.Height));
                lines.Add(toPush);
            }
        }