<% @ WebHandler Language = "C #" Class = "CreateCode" %>    Using System; Using System. Web; Using System. Drawing; Using System. Drawing. Imaging; Using System. Web. SessionState; Using System. Collections. Generic; Using System. Text; Using System. Drawing;    Public class CreateCode: IHttpHandler, IRequiresSessionState {  /// <Summary> /// Dynamic verification code by Jack /// Calculate the verification code when the value type is not null /// </Summary> Public void ProcessRequest (HttpContext context)     {  System. Web. HttpResponse response = context. Response; // Text content of the verification code String type = ""; If (context. Request ["type"]! = Null) Type = context. Request ["type"]. ToString (); String checkCode = ""; If (string. IsNullOrEmpty (type ))         {  CheckCode = CreateCheckCodeString (); Context. Session. Add ("gs_codeStr", checkCode );         }  Else         {  String [] codes = CreateCheckCode (); CheckCode = codes [0]; Context. Session. Add ("gs_codeStr", codes [1]);         }  Int width = 80; // the image width of the verification code. Int height = 22; // The Image height of the verification code Font font = new Font ("Arial", 12, FontStyle. Bold); // The Font of the verification code. SolidBrush brush = new SolidBrush (Color. Black); // The brush used to write the verification code Pen crosswise = new Pen (Color. Green, 0); // draw a Pen with horizontal interference lines Pen vertical = new Pen (Color. FromArgb (255,100,100,100), 0); // draw a Pen with vertical interference lines Bitmap image = new Bitmap (width, height); // generate an image Graphics g = Graphics. FromImage (image); // Generate a painting panel (canvas) G. Clear (ColorTranslator. FromHtml ("# f0f0f0"); // fill the canvas with the specified color RectangleF rect = new RectangleF (10, 2, width, height); // define the rectangle for text painting floating x, y, width, height, Random rand = new Random (int) DateTime. Now. Ticks); // Generate Random object of interference line For (int I = 0; I <2; I ++)         {  Point start = new Point (0, rand. Next (height )); Point end = new Point (width, rand. Next (height )); G. DrawLine (crosswise, start, end );         }  For (int I = 0; I <4; I ++)         {  Point start = new Point (rand. Next (width), 0 ); Point end = new Point (rand. Next (width), height ); G. DrawLine (vertical, start, end );         }  G. DrawString (checkCode, font, brush, rect); // write the verification code to the canvas. System. IO. MemoryStream MS = new System. IO. MemoryStream (); Try         {  Image. Save (MS, System. Drawing. Imaging. ImageFormat. Gif ); Response. ClearContent (); Response. ContentType = "image/Gif "; Response. BinaryWrite (ms. ToArray ());         }  Finally         {  Ms. Flush (); Ms. Close (); Ms. Dispose (); G. Dispose (); Image. Dispose ();         }      }  // Define the string verification code Private string CreateCheckCodeString () {// Define the character array used for verification code Char [] AllCheckCodeArray = {'1', '2', '3', '4', '5', '6', '7', '8 ', '9', 'A', 'B', 'C ', 'D', 'e', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M ', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'u', 'V', 'W ', 'X', 'y', 'Z '}; // Define the verification code string String randomcode = ""; Random rd = new Random (); // Generate a four-digit verification code string For (int I = 0; I <5; I ++) Randomcode + = AllCheckCodeArray [rd. Next (AllCheckCodeArray. Length)]; Return randomcode;     }     // Define the number operation verification code {1 + 1 =? , 2} Private string [] CreateCheckCode () {// Define the character array used for verification code Int [] AllCheckCodeArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // Define the verification code string String randomcode = ""; // 1 + 1 =? Int result = 0; // 2 Random rd = new Random (); // Generate a four-digit verification code string For (int I = 0; I <5; I ++) If (I! = 1 & I! = 4)             {  Int curint = AllCheckCodeArray [rd. Next (AllCheckCodeArray. Length)]; If (I = 0 | I = 2) Result + = curint; If (I = 3) Randomcode + = "= "; Else Randomcode + = curint;             }  Else             {  If (I = 1) Randomcode + = "+ "; If (I = 4) Randomcode + = "? ";             }  Return new string [] {randomcode, result. ToString ()};     }     Public bool IsReusable     {  Get         {  Return false;         }      }     }  |