Ejemplo n.º 1
0
        /// <summary>
        /// 获取验证码图片
        /// </summary>
        /// <returns></returns>
        protected Bitmap GetVerifyCodeImage()
        {
            this.GetVerifyCodeText();
            Bitmap bitmap = new Bitmap(ImgWidth, ImgHeight);

            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                //清除整个绘图面并以指定背景色填充
                graphics.Clear(this.BackgroundColor);
                //创建画笔
                using (SolidBrush brush = new SolidBrush(this.IsRandomColor?GetRandomColor():this.FontColor))
                {
                    this.AddForeNoisePoint(bitmap);
                    this.AddBackgroundNoisePoint(bitmap, graphics);
                    //文字居中
                    StringFormat stringFormat = new StringFormat(StringFormatFlags.NoClip);
                    stringFormat.Alignment     = StringAlignment.Center;
                    stringFormat.LineAlignment = StringAlignment.Center;

                    //字体样式
                    Font font = new Font(this.FontFamily, RandomBuilder.GenerateInt(this.FontSize - 3, this.FontSize), FontStyle.Regular);

                    //验证码旋转,防止机器识别
                    char[] chars = this.VerifyCodeText.ToCharArray();

                    for (int i = 0; i < chars.Length; i++)
                    {
                        //转动的角度
                        float angle = RandomBuilder.GenerateInt(-this.RandomAngle, this.RandomAngle);

                        graphics.TranslateTransform(12, 12);
                        graphics.RotateTransform(angle);
                        graphics.DrawString(chars[i].ToString(), font, brush, -2, 2, stringFormat);
                        graphics.RotateTransform(-angle);
                        graphics.TranslateTransform(2, -12);
                    }
                }
            }
            return(bitmap);
        }
Ejemplo n.º 2
0
        public void TestGenerateInt()
        {
            int?old = null;

            for (int i = 0; i < 100; i++)
            {
                var result = _builder.GenerateInt(100);
                Assert.IsTrue(old != result, "!=");
                Assert.IsTrue(result >= 0, ">=0");
                Assert.IsTrue(result <= 100, "<=100");
            }
        }