熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#創建簡單的驗證碼

2013-11-13 12:18:52  來源: .NET編程 

    首先創建一個CLASS類然後需要add Reference的方式添加 SystemDrawing(畫畫的類)

    方法代碼如下
    /**//// <summary>
    /// 定義顯示的隨機字符
    /// </summary>
    /// <param name=strList></param>
    /// <returns></returns>
    private string imageStr(char[] strList)
        {

            if (strList == null)
                strList = ABCDEFGHIJKLMNOPQRSTUVWXYZToCharArray();

            int codeLengh = ;
            string radomCode = ;
            Random r = new Random();
            for (int i = ; i < codeLengh;i++)
            {
                radomCode += strList[rNext(strListLength)];
            }
            return radomCode;
        }

    /**//// <summary>
    /// 創建隨機驗證字符的IMAGE並保存同時返回隨機字符串
    /// </summary>
    /// <param name=iWidth>圖片寬度 默認為</param>
    /// <param name=iHeight>圖片高度 默認為</param>
    /// <param name=font>字符字體 null時默認為 Arial FontStyleBold</param>
    /// <param name=sb>字符顏色 null時默認為紅</param>
    /// <param name=ImagePath>需要保存的文件絕對路徑</param>
    /// <param name=strList>隨即字符庫 null時默認為AZ</param>
    /// <returns>返回隨機字符串</returns>
        public string createImgWithStr(int iWidthint iHeightFont fontSolidBrush sb string ImagePathchar[] strList)
        {
            if (font == null)
                font = new Font(Arial FontStyleBold);
            if (sb == null)
                sb = new SolidBrush(ColorRed);
            if (iWidth == )
                iWidth = ;
            if (iHeight == )
                iHeight = ;
            //得到隨機字符串
            string imageString = imageStr(strList);
            //定義橫向豎向都畫跳線
            int lineCount = ;
            這支筆用來畫線條的
            Pen pen = new Pen(ColorGold );
            Pen pen = new Pen(ColorBlack );
    //定義圖片
            Bitmap image = new Bitmap(iWidth iHeight);
            //跟JME一樣的畫筆
            Graphics g = GraphicsFromImage(image);
            //先畫背景色 當然你可以自定義下
            gClear(ColorTranslatorFromHtml(#FFF));
            //確定寫字的落點
            Rectangle rect = new Rectangle( iWidth iHeight);

            Random r = new Random();

            //默認隨機畫橫向豎向條線
            for(int i =;i<lineCount;i++)
            {
                Point p = new Point( rNext(iHeight));
                Point p = new Point(iWidth rNext(iHeight));
                Point p = new Point(rNext(iWidth) );
                Point p = new Point(rNext(iWidth) iHeight);
                gDrawLine(pen p p);
                gDrawLine(pen p p);
            }
            //寫字
            gDrawString(imageString font sb rect); 

           //刪除源文件
            if (FileExists(ImagePath))
                FileDelete(ImagePath);
            //保存文件我定義為jpeg格式
            imageSave(ImagePath SystemDrawingImagingImageFormatJpeg);
            //釋放資源
            gDispose();
            imageDispose();

            return imageString;
        }
    另外我在實際運用過程中總是發現重新生成了圖片但是顯示卻還是以前那張最後在網上找到了答案原本的<aspImage ID=Image runat=server ImageUrl=~/ajpg />改成<aspImage ID=Image runat=server ImageUrl=~/ajpg?temp=<%=  DateTimeNowTicks%> />就能夠自動更新了……另外代碼段中的<%=  DateTimeNowTicks%> 不能改成<%=DateTimeNowTicks%> 少了一個空格就掛了誰能告訴我為什麼呢??


From:http://tw.wingwit.com/Article/program/net/201311/15641.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.