程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#用GDI+繪制驗證碼(2)

C#用GDI+繪制驗證碼(2)

編輯:關於C語言

上面有一個RandomGeneratorStyle,這個是我自己寫的一個枚舉,用於表示需要生成哪種驗證碼。

RandomGeneratorStyle

public enum RandomGeneratorStyle
{
     /// <summary>
     /// 只有數字
     /// </summary>
     Number,
     /// <summary>
     /// 包含數字和大小寫字符
     /// </summary>
     NumberAndChar,
     /// <summary>
     /// 包含數字和大寫字符
     /// </summary>
     NumberAndCharIgnoreCase
}

2.有了這些數,那下面就基本上考你是畫畫的功夫了。當然這裡用到的不是顏料、水彩筆等,而是要 用GDI+。

平時,我們看見的驗證碼是什麼樣式子的?是不是一個矩形?矩形裡面有一些隨機數?那接下去要做 的就是用GDI+技術把生成的隨機數畫到一個矩形中。

這個要用到的主要的就只有一個方法:Graphics.DrawString();不了解的朋友可以先去網上查查關於 這個方法的介紹。下面直接來看代碼:

繪制驗證碼

public static void Generate(RandomGeneratorStyle style, int length,Page  curPage)
{
     Bitmap bmp = new Bitmap((int)Math.Ceiling(length * 12.5), 20);//新建一個圖 片對象
     Graphics g = Graphics.FromImage(bmp);//利用該圖片對象生成“畫板”
     string strCode = RandomGenerator.Generate(style, length);//生成隨機數
     curPage.Session["yzmCode"] = strCode;//保存到Session中,為驗證服務.你也可以存放 在其它地方,只要在需要驗證的時候你能取到
     Font font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Italic);//設 置字體顏色
     SolidBrush brush = new SolidBrush(Color.White);//新建一個畫刷,到這裡為止,我們 已經准備好了畫板、畫刷、和數據
     g.DrawString(strCode, font, brush, 0, 0);//關鍵的一步,進行繪制。
     bmp.Save(curPage.Response.OutputStream, ImageFormat.Jpeg);//保存為輸出流,否則頁 面上顯示不出來
     g.Dispose();//釋放掉該資源
}

現在,就可以來測試下它的效果了。想要調用上面的方法,我們必須要傳入一個當前的Page對象,為 此我們可以新建一個頁面命名為yzm.ASPx。然後,在PageLoad中調用該方法。這樣,我們便可以看到它了 。如下圖1所示:

圖1 驗證碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved