當前位置:法律諮詢服務網 - 企業資訊 - C# Winform實現登錄界面的驗證碼功能(文章最後附源代碼)

C# Winform實現登錄界面的驗證碼功能(文章最後附源代碼)

沒事幹,最近發現自己的驗證碼功能沒寫出來。所以寫了這篇文章。

界面很難看。壹個picturebox,壹個textbox,壹個button按鈕主要是想先實現功能,萬壹以後業務上需要用到。

實現未來功能圖。

在文本框中輸入相應的文字,點擊確定確認,正確的時間如圖。

如果驗證失敗,沒有提示,直接更新驗證碼。當然,當妳需要使用的時候,按照業務邏輯就可以了。這個比較簡單。

首先,使用隨機函數生成驗證碼字符串。

第二:在picturebox中繪制字符串。

三、點擊圖片刷新驗證碼。

第四個驗證碼不區分大小寫。

或區分大小寫。

此時完成

源代碼:

使用系統;

使用系統。集合。泛型;

使用系統。組件模型;

使用系統。數據;

使用系統。繪圖;

使用系統。Linq

使用系統。文本;

使用系統。Windows . Forms

名稱空間suijima

{

公共分部類表單1:表單

{

公共表單1()

{

initialize component();

}

//驗證碼的長度

private const int iveriycodelength = 6;

//驗證碼

私有字符串strVerifyCode =

//匹配字符的臨時變量

string strTemp =

私有void btnUpdate_Click(對象發送方,EventArgs e)

{

UpdateVerifyCode();

}

私有void Form1_Load(對象發送方,EventArgs e)

{

UpdateVerifyCode();

}

//更新驗證碼

私有void UpdateVerifyCode()

{

strVerifyCode = CreateRandomCode(iVerifyCodeLength);

if(strVerifyCode== " ")

{

返回;

}

strTemp = strVerifyCode

create image(strVerifyCode);

}

//生成驗證碼字符串

私有字符串CreateRandomCode(int iLength)

{

int rand

字符代碼;

string randomCode = String。空的;

//生成壹定長度的驗證碼

系統。Random Random = new Random();

for(int I = 0;我& ltiLengthi++)

{

rand =隨機。next();

if (rand % 3 == 0)

{

code =(char)(' A '+(char)(rand % 26));

}

其他

{

code =(char)(' 0 '+(char)(rand % 10));

}

randomCode +=代碼。ToString();

}

返回randomCode

}

///?創建驗證碼圖片

私有void CreateImage(字符串strVerifyCode)

{

嘗試

{

int iRandAngle = 45//隨機旋轉角度

int IMAP width =(int)(strVerifyCode。長度* 21);

Bitmap map =新位圖(iMapWidth,28);//創建圖片背景

圖形graph =圖形。FromImage(地圖);

圖表。透明(彩色。Alice blue);//清除圖片,填充背景。

圖表。DrawRectangle(新鋼筆(顏色。黑色,0),0,0,地圖。寬度- 1,地圖。身高-1);//繪制邊框

圖表。SmoothingMode = System。drawing . drawing 2d . smoothing mode . antialias;//模式

Random rand = new Random();

//背景噪聲生成

鋼筆blackPen =新鋼筆(彩色。淺灰色,0);

for(int I = 0;我& lt50;i++)

{

int x =蘭特。接下來(0,地圖。寬度);

int y =蘭特。接下來(0,地圖。身高);

圖表。DrawRectangle(blackPen,x,y,1,1);

}

//驗證碼旋轉防止機器識別。

char[] chars = strVerifyCode。ToCharArray();//將字符串分解成單字符數組

//文本間距

string format format = new string format(string format flags。NoClip);

格式。對齊= StringAlignment。居中;

格式。LineAlignment = StringAlignment居中;

//定義顏色

Color[] c = { Color。黑色,彩色。紅色,彩色。深藍色,顏色。綠色,

顏色。橙色,彩色。棕色,彩色。暗青色,彩色。紫色};

//定義字體

String [] font = {"verdana "," Microsoft sans serif "," Comic sans ms "," Arial "," Song Ti " };

for(int I = 0;我& lt字符。長度;i++)

{

int cindex = rand。接下來(7);

int findex = rand。接下來(5);Font f =新系統。Drawing.Font(字體[findex],13,系統。drawing . font style . bold);//字體樣式(參數2是字體大小)

刷b =新系統。drawing . solid brush(c[cindex]);

點dot =新點(16,16);

浮動角度=蘭特。下壹個(-iRandAngle,iRandAngle);//旋轉的角度

圖表。TranslateTransform(點。x點。y);//將光標移動到指定位置。

圖表。旋轉變換(角度);

圖表。拉繩(chars[i]。ToString(),f,b,1,1,格式);

圖表。旋轉變換(-角度);//向後轉

圖表。TranslateTransform(2,-dot。y);//將光標移動到指定位置。

}

pictureBox1。圖像=地圖;

}

catch(參數異常)

{

MessageBox。Show("創建圖片時出錯。");

}

}

私有void button1_Click(對象發送方,EventArgs e)

{

//驗證大小寫

char[] ch1 = textBox1。text . ToCharArray();

char[] ch2 = strTemp。ToCharArray();

int nCount = 0;

for(int I = 0;我& ltstrTemp。長度;i++)

{

if((ch 1[I]>;= ' a ' & amp& ampch 1[I]& lt;= ' z ')| |(ch 1[I]& gt;= ' A ' & amp& ampch 1[I]& lt;='Z '))

{

if(ch 1[I]-32 = = CH2[I]| | ch 1[I]+32 = = CH2[I])

{

ncount++;

}

}

其他

{

if (ch1[i]==ch2[i])

{

ncount++;

}

}

}

if (nCount==strTemp。長度)

{

MessageBox。Show("驗證通過");

}

其他

{

UpdateVerifyCode();

文本框1。Text =

}

////無法驗證大小寫。

//if(textBox1。Text==strTemp)

//{

// MessageBox。Show("驗證通過");

//}

//否則

//{

//UpdateVerifyCode();

// textBox1。Text =

//}

}

///& lt;總結& gt

///圖片點擊事件

///& lt;/summary & gt;

///& lt;param name = " sender " & gt& lt/param & gt;

///& lt;param name = " e " & gt& lt/param & gt;

私有void pictureBox1_Click(對象發送方,EventArgs e)

{

UpdateVerifyCode();

}

}

}

  • 上一篇:李寧是日本控股嗎
  • 下一篇:面試官問妳,妳有什麽問題嗎?妳怎麽問他們?
  • copyright 2024法律諮詢服務網