目前基本上所有的網站登陸的時候都有的圖形的驗證,添入使用者名稱,密碼,和圖片裡的字母才能登陸,我以前一直想做一個,由於種種原因一直拖到今天下午!
其實也不是很複雜就是用GDI+產生一個隨機的字串的圖片,然後將它顯示出來,說太空泛了,下面是產生隨即數字圖片的代碼
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace webimage
{
/// <summary>
/// WebForm1 的摘要說明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置使用者代碼以初始化頁面
if(!Page.IsPostBack)
{
showimg();
}
}
private void showimg()
{
this.randomnumber();
this.drawimage(Session["valdata"].ToString());
}
private void randomnumber()
{
Random rd = new Random();
string result = "";
for(int i = 0 ;i<6;i++)
{
result+=rd.Next(10).ToString();
}
Session["valdata"]=result;
}
private void drawimage(string mess)
{
//建立一個Bitmap對象
Bitmap bit = new Bitmap(100,30);
//有Bitmap建立一個Graphics對象
Graphics g = Graphics.FromImage(bit);
Font ft = new Font("Impact",15);
//填寫內容
g.DrawString(mess,ft,new SolidBrush(Color.Yellow),new Point(15,2));
//劃一個方框
g.DrawLine(Pens.WhiteSmoke,2,2,98,2);//-
g.DrawLine(Pens.White,2,2,2,28);//|
g.DrawLine(Pens.WhiteSmoke,98,2,98,28);
g.DrawLine(Pens.White,2,28,98,28);
//輸出並釋放
bit.Save(Response.OutputStream,ImageFormat.Gif);
bit.Dispose();
g.Dispose();
Response.End();
}
#region Web Form設計器產生的程式碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 該調用是 ASP.NET Web Form設計器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 設計器支援所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
這就產生了一張隨機產生六位元字的圖象,這我看看資料一會就做出來了,下面的東西卻困惑了我半天
我在該頁面上添加了個Button控制項,想著點擊一次從新產生一張圖片,可是網頁開啟後只有隨機圖片卻沒有按鈕,我還以為我放錯頁面了,回來一看,沒錯,為什麼按鈕不能正確顯示呢?我沒有找到相關的東西,但是我認為是這樣的,圖片輸出的時候用bit.Save(Response.OutputStream,ImageFormat.Gif); 是記憶體流把按鈕控制項的資訊給衝掉了吧.不去想了,這樣我想在另外一頁引用它,我看到網上有篇文章使用Image控制項然後把ImageUrl指向那一頁就可以了!我照著做的,沒有問題!
下面的串連是我上傳的代碼(VS03)
http://files.cnblogs.com/interboy/webimage.rar