private void button1_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(100, 30);
//产生位图,在位图上绘制
Graphics graphics = Graphics.FromImage(bitmap);
//使用GDI+绘图
Random random = new Random();
//产生随机数
string str = "";
//定义字符串用于存放数字字符串
for (int a = 0; a < 4; a++)//产生4个随机数字符串
{
str += random.Next(0, 10);//产生个位随机数字,连接各个随机数
}
string[] fonts = {"宋体","楷体","黑体","微软雅黑" };//定义字体数组存字体
Color[] color = {Color.Red,Color.Black,Color.Green,Color.Yellow,Color.White,Color.Orange};//定义Color数组
for (int a = 0; a < 4; a++)
{
Point point = new Point(20 * a,0) ;//定义一个起始点坐标
graphics.DrawString(str[a].ToString(), new Font(fonts[random.Next(0,4)],17,FontStyle.Bold),new SolidBrush(color[random.Next(0,6)]),point);
//注:new Color()不能重载故用new SolidBrush代替
// DrawString的参数信息(string s, Font font, Brush brush, PointF point)
//几个为什么
//1 为什么第1个参数要加上点ToString括号?
//答:数组中的每一个元素是字符(char类型),但是这边需要string类型的所以需要进行类型转换
//2 Point中为什么要指定(20*a,0)?
//答:因为每循环一次打印出一个字符数字,所以其起始点坐标必须改变
//否则会使字符重叠,看不清,20为第1个点到第2个点的像素,大小可根据需要调整
//
}
for (int a = 0; a < 20; a++)
//绘制线干扰项
{
Pen pen = new Pen(Color.Orange);//新建一个画笔

Point point2 = new Point(random.Next(0, bitmap.Width), random.Next(0, bitmap.Height));
graphics.DrawLine(pen,point1,point2);
}
for (int a = 0; a 20; a++)
{
//添加点干扰项
bitmap.SetPixel(random.Next(0,bitmap.Width),random.Next(0,bitmap.Height),Color.Blue);
}
pictureBox1.Image=bitmap;
}
举报 0