public override void Create(Graphics graphics, XCaptcha.ICanvas canvas) { var random = new Random(); for (var i = 0; i < (canvas.Width * canvas.Height / 10); i++) { var x = random.Next(canvas.Width); var y = random.Next(canvas.Height); var w = random.Next(3); var h = random.Next(3); graphics.FillEllipse(Brush, x, y, w, h); } }
public override GraphicsPath Create(GraphicsPath path, XCaptcha.ICanvas canvas) { var random = new Random(); var rect = new Rectangle(0, 0, canvas.Width, canvas.Height); const float wrapFactor = 8F; PointF[] points = { new PointF(random.Next(rect.Width) / wrapFactor,random.Next(rect.Height) / wrapFactor), new PointF(rect.Width - random.Next(rect.Width) / wrapFactor, random.Next(rect.Height) / wrapFactor), new PointF(random.Next(rect.Width) / wrapFactor, rect.Height - random.Next(rect.Height) / wrapFactor), new PointF(rect.Width - random.Next(rect.Width) / wrapFactor, rect.Height - random.Next(rect.Height) / wrapFactor) }; var matrix = new Matrix(); matrix.Translate(0F, 0F); path.Warp(points, rect, matrix, WarpMode.Perspective, 0F); return path; }