GDI绘制学习资料:GDI绘制学习资料
GDI绘制验证码
- 创建5个随机数,存入字符串或者数组
- 创建图形对象:
Bitmap bmp = new Bitmap(150,40);
- 创建GDI对象:
Graphics g = Graphics.FromImage(bmp);
- 循环5次,随机字体、颜色文本绘制每个随机数:
g.DrawString(s[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]),
- 循环随机两点绘制直线,来做验证码的干扰线:
g.DrawLine(new Pen(Brushes.Green), p1, p2);
- 循环设置随机点的像素颜色:
bmp.SetPixel(p.X, p.Y, Color.Black);
Random r = new Random();
string s = null;
//创建5个随机数
for (int i = 0; i < 5; i++)
{
int n = r.Next(0, 10);
s += n;
}
//MessageBox.Show(s);
//创建图形对象
Bitmap bmp = new Bitmap(150,40);
//创建GDI对象
Graphics g = Graphics.FromImage(bmp);
for(int i = 0; i < 5; i++)
{
//固定每个验证码的横坐标位置
Point p = new Point(i * 20, 0);
//创建字体和颜色数组
string[] fonts = { "微软雅黑", "宋体", "黑体", "楷体", "仿宋" };
Color[] colors = { Color.Yellow, Color.Blue, Color.Red, Color.Green, Color.Black };
//绘制文本
g.DrawString(s[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);
}
//循环多次绘制验证码干扰线条
for(int i = 0; i < 20; i++)
{
//随机两个点的位置
Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
//绘制直线
g.DrawLine(new Pen(Brushes.Green), p1, p2);
}
//循环多次绘制验证码的干扰像素点
for(int i = 0; i < 500; i++)
{
//随机一个点的位置
Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
//设置图形指定位置的像素颜色
bmp.SetPixel(p.X, p.Y, Color.Black);
}
//将图形嵌入到pictrueBox
pictureBox1.Image = bmp;