验证码颜色
我前面,写了验证码,简单说了一下验证码颜色不同的设置方法,具体可以看一看我的这篇文章
想要让验证码的每个字符颜色不一样,需要抓住一个思路,那就是:字符本身不能设置颜色,所以要给字符设置颜色需要给字符一个载体,随机生成的验证码是一个字符串,需要给这个字符串的每一个字符都给一个载体,即将生成的字符分别放进一个label里。
这样就引出了一个问题,那就是如何将生成的字符放进label里?
在上一篇文章里我是直接将生成的字符一个一个放进label里,在这一篇,我会从字符串分割字符放进label中
方法一:Split()
Split()是通过括号里的字符来分割字符串的
比如:
有一个字符串string str=ds-afa-slj-kdg-h
string[] sstr=str.Split(’-’)
结果:sstr[0]=ds;sstr[1]=afa;sstr[2]=slj;sstr[3]=kdg;sstr[4]=h;
Random r = new Random();
string str = "";
for (int i = 1; i <= 4; i++)
{
int a = r.Next(0, 3);//设置随机0,1,3;判断生成的是数字,小写字母,大写字母
if (a == 0)
{
str += r.Next(0, 10).ToString() + "-";
}
else if (a == 1)
{
str += (char)r.Next(65, 91) + "-";//随机生成大写字母
}
else if (a == 2)
{
str += (char)r.Next(97, 123) + "-";//随机生成小写字母
}
}
string[] sstr = str.Split('-');//将字符串分割为数组
label1.Text = sstr[0];
label2.Text = sstr[1];
label3.Text = sstr[2];
label4.Text = sstr[3];
label1.ForeColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
label2.ForeColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
label3.ForeColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
label4.ForeColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
方法二:Substring
与方法一相同,这种方式也是分割字符串
Substring(x,y)
x,表示从第几个字符开始截取字符,从0开始数
y,表示截取的字符个数,什么数字就是截取几个字符
Random r = new Random();
string str = "";
for (int i = 1; i <= 4; i++)
{
int a = r.Next(0, 3);//设置随机0,1,3;判断生成的是数字,小写字母,大写字母
if (a == 0)
{
str += r.Next(0, 10).ToString();
}
else if (a == 1)
{
str += (char)r.Next(65, 91);//随机生成大写字母
}
else if (a == 2)
{
str += (char)r.Next(97, 123);//随机生成小写字母
}
}
label1.Text = str.Substring(0,1);
label2.Text = str.Substring(1, 1);
label3.Text = str.Substring(2, 1);
label4.Text = str.Substring(3, 1);
label1.ForeColor = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
label2.ForeColor = Color.FromArgb(r.Next(0, 255)