(1)//..........CaptchaImage.cs using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text;
namespace App_Code { /// /// Summary description for CaptchaImage. /// public class CaptchaImage { // Public properties (all read-only). public string Text { get { return this.text; } }
public Bitmap Image { get { return this.image; } }
public int Width { get { return this.width; } }
public int Height { get { return this.height; } }
// Internal properties. private string text; private int width; private int height; private string familyName; private Bitmap image;
// For generating random numbers. private Random random = new Random();
// ==================================================================== // Initializes a new instance of the CaptchaImage class using the // specified text, width and height. // ==================================================================== public CaptchaImage(string s, int width, int height) { this.text = s; this.SetDimensions(width, height); this.GenerateImage(); }
// ==================================================================== // Initializes a new instance of the CaptchaImage class using the // specified text, width, height and font family. // ==================================================================== public CaptchaImage(string s, int width, int height, string familyName) { this.text = s; this.SetDimensions(width, height); this.SetFamilyName(familyName); this.GenerateImage(); }
// ==================================================================== // This member overrides Object.Finalize. // ==================================================================== ~CaptchaImage() { Dispose(false); }
// ==================================================================== // Releases all resources used by this object. // ==================================================================== public void Dispose() { GC.SuppressFinalize(this); this.Dispose(true); }
// ==================================================================== // Custom Dispose method to clean up unmanaged resources. // ==================================================================== protected virtual void Dispose(bool disposing) { if (disposing) // Dispose of the bitmap. this.image.Dispose(); }
// ==================================================================== // Sets the image width and height. // ==================================================================== private void SetDimensions(int width, int height) { // Check the width and height. if (width <= 0) throw new ArgumentOutOfRangeException("width", width, "Argument out of range, must be greater than zero."); if (height <= 0) throw new ArgumentOutOfRangeException("height", height, "Argument out of range, must be greater than zero."); this.width = width; this.height = height; }
// ==================================================================== // Sets the font used for the image text. // ==================================================================== private void SetFamilyName(string familyName) { // If the named font is not installed, default to a system font. try { Font font = new Font(this.familyName, 12F); this.familyName = familyName; font.Dispose(); } catch (Exception ex) { this.familyName = System.Drawing.FontFamily.GenericSerif.Name; } }
// ==================================================================== // Creates the bitmap image. // ==================================================================== private void GenerateImage() { // Create a new 32-bit bitmap image. Bitmap bitmap = new Bitmap(this.width, this.height, PixelFormat.Format32bppArgb);
// Create a graphics object for drawing. Graphics g = Graphics.FromImage(bitmap); g.SmoothingMode = SmoothingMode.AntiAlias; Rectangle rect = new Rectangle(0, 0, this.width, this.height);
// Fill in the background. HatchBrush hatchBrush = new HatchBrush(HatchStyle.ZigZag, Color.LightGray, Color.White); g.FillRectangle(hatchBrush, rect);
// Set up the text font. SizeF size; float fontSize = rect.Height + 1; Font font; // Adjust the font size until the text fits within the image. do { fontSize--; font = new Font(this.familyName, fontSize, FontStyle.Bold); size = g.MeasureString(this.text, font); } while (size.Width > rect.Width);
// Set up the text format. StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center;
// Create a path using the text and warp it randomly. GraphicsPath path = new GraphicsPath(); path.AddString(this.text, font.FontFamily, (int) font.Style, font.Size, rect, format); float v = 4F; PointF[] points = { new PointF(this.random.Next(rect.Width)/v, this.random.Next(rect.Height)/v), new PointF(rect.Width - this.random.Next(rect.Width)/v, this.random.Next(rect.Height)/v), new PointF(this.random.Next(rect.Width)/v, rect.Height - this.random.Next(rect.Height)/v), new PointF(rect.Width - this.random.Next(rect.Width)/v, rect.Height - this.random.Next(rect.Height)/v) }; Matrix matrix = new Matrix(); matrix.Translate(0F, 0F); path.Warp(points, rect, matrix, WarpMode.Perspective, 0F);
// Draw the text. hatchBrush = new HatchBrush(HatchStyle.LargeConfetti, Color.LightGray, Color.DarkGray); g.FillPath(hatchBrush, path);
// Add some random noise. int m = Math.Max(rect.Width, rect.Height); for (int i = 0; i < (int) (rect.Width*rect.Height/30F); i++) { int x = this.random.Next(rect.Width); int y = this.random.Next(rect.Height); int w = this.random.Next(m/50); int h = this.random.Next(m/50); g.FillEllipse(hatchBrush, x, y, w, h); }
// Clean up. font.Dispose(); hatchBrush.Dispose(); g.Dispose();
// Set the image. this.image = bitmap; } } } (2)//..........Deafault.aspx.cs using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page { // For generating random numbers. private Random random = new Random();
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { // Create a random code and store it in the Session object. this.Session["CaptchaImageText"] = GenerateRandomCode(); } }
// // Returns a string of six random digits. // private string GenerateRandomCode() { string s = ""; for (int i = 0; i < 6; i++) s = String.Concat(s, this.random.Next(10).ToString()); return s; } protected void SignupButton_Click(object sender, EventArgs e) { if (!Page.IsValid) return; if ((CaptchaTextBox.Text == this.Session["CaptchaImageText"].ToString()) && Page.IsValid) { // Display an informational message. //MessageLabel.CssClass = "info"; Label1.Text = "Correct!";
//gpstatusbox here...
//SaveRecord(); } else { // Display an error message. //MessageLabel.CssClass = "error"; Label1.Text = "ERROR: Incorrect, try again.";
////gpstatusbox here...
// Clear the input and create a new random code. CaptchaTextBox.Text = ""; this.Session["CaptchaImageText"] = GenerateRandomCode(); } } } (3)//...........Deafault(sourcs/web form) //<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" //Inherits="_Default" %>
//
// // // Untitled Page // // // // //
(4)//..............JpegImage(asp.netserverpage..source/web form) //<%@ Page language="C#" CodeFile="JpegImage.aspx.cs" AutoEventWireup="true" //Inherits="JpegImage" %> // // // // JpegImage // // // // //content="http://schemas.microsoft.com/intellisense/ie5"> // // // // //
(5)//.......JpegImage.aspx.cs using System.Drawing.Imaging; using App_Code;
public partial class JpegImage : System.Web.UI.Page { protected void Page_Load(object sender, System.EventArgs e) { // Create a CAPTCHA image using the text stored in the Session object. CaptchaImage ci = new CaptchaImage(this.Session["CaptchaImageText"].ToString(), 200, 50, "Century Schoolbook");
// Change the response headers to output a JPEG image. this.Response.Clear(); this.Response.ContentType = "image/jpeg";
// Write the image to the response stream in JPEG format. ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
// Dispose of the CAPTCHA image object. ci.Dispose(); } }
|
No responses found. Be the first to respond and make money from revenue sharing program.
|