Silverlight中验证码生成

   public class ValidationCode
    {
        Random r = new Random(DateTime.Now.Millisecond);

        /// <summary>
        /// 用于在生成验证码
        /// </summary>
        /// <param name="text">生成验证码的字符串</param>
        /// <param name="img">silverlight中的Imge控件</param>
        public void CreatImage(string text, Image img)
        {
            int height =Convert.ToInt32(img.Height);
            int width = Convert.ToInt32(img.Width);
            Grid Gx = new Grid();

            //用于生成干扰线
            Canvas cv1 = new Canvas();
            for (int i = 0; i < 6; i++)
            {
                Polyline p = new Polyline();
                for (int ix = 0; ix < r.Next(3, 6); ix++)
                {
                    p.Points.Add(new Point(r.NextDouble() * width,
                        r.NextDouble() * height));
                }
                byte[] Buffer = new byte[3];
                r.NextBytes(Buffer);
                SolidColorBrush SC = new SolidColorBrush(Color.FromArgb(255,
                    Buffer[0], Buffer[1], Buffer[2]));
                p.Stroke = SC;
                p.StrokeThickness = 0.5;
                cv1.Children.Add(p);
            }
            Gx.Children.Add(cv1);

            //用于生成数字
            Canvas cv2 = new Canvas();
            int y = 0;
            int lw = 6;
            double w = (width - lw) / text.Length;
            int h = (int)height;
            foreach (char x in text)
            {
                byte[] Buffer = new byte[3];
                r.NextBytes(Buffer);  //用随机数填充字节数组的元素
                SolidColorBrush SC = new SolidColorBrush(Color.FromArgb(255,
                    Buffer[0], Buffer[1], Buffer[2]));
                TextBlock t = new TextBlock();
                t.TextAlignment = TextAlignment.Center;
                t.FontSize = r.Next(h - 3, h); //返回一个指定范围内的数  设定字体大小<像素高度-3>
                t.Foreground = SC;    //设置前景色
                t.Text = x.ToString();
                t.Projection = new PlaneProjection()  //对象的透视转换(类似三维效果)
                {
                    RotationX = r.Next(-30, 30),
                    RotationY = r.Next(-30, 30),
                    RotationZ = r.Next(-10, 10)
                };
                cv2.Children.Add(t);
                Canvas.SetLeft(t, lw / 2 + y * w);
                Canvas.SetTop(t, 0);
                y++;
            }

            Gx.Children.Add(cv2);

            //基于内存管理图像的类
            WriteableBitmap W = new WriteableBitmap(Gx, new TransformGroup());
            W.Render(Gx, new TransformGroup());

            img.Source = W;
        }   }
时间: 2024-11-08 21:39:00

Silverlight中验证码生成的相关文章

【原创】有关Silverlight中自动生成的类中 没有WCF层edmx模型新加入的对象 原因分析。

前端页面层: 编译老是不通过,报如下如所示错误: -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类. 结果整理: 1.尽管在 edmx 模型中加入了 对应的表,但 如果在 wcf层是 没有 显示的去 写方法 去调用的话, silverlight 自动生成的 类 里面 也是不会 出现该类的! 解决措施: 在WCF层的一些Service类中显示的 用下 目标对象.

在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码

只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这个js函数,使其动态生成一个新的验证码,这个函数中的参数t=Math.random()并不会参与验证码的生成,它的作用仅仅只是表示每次提交的并不是同一个请求,需要单独处理,完整的login.jsp代码如下: <%@ page language="java" contentType=&

轻松学会网页中验证码的生成(JAVA)

验证码生成的基本流程 1.验证码的生成,我们能够看到是用Graphics对象画出来的.对象我们必须要获得Graphics对象 1-1,Graphics对象的获取,要通过BufferedImage获得 <span style="font-size:18px;">int width=100;//确定框框的大小 int height=40; BufferedImage bfi =new BufferedImage(width, height, BufferedImage.TYPE

asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题

最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception System.ArgumentException The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound] Description: HTTP 500.Error processing request. De

struts2中验证码的生成和使用

第一步生产字符串: package com.yancode.demo; import java.util.Arrays; /* * 一步一步来,要生成验证码图片,首先要有验证码,然后才能在画在图片上.为了能够灵活控制验证码, * 特别编写了SecurityCode类,它向外提供随机字符串.并且可以控制字符串的长度和难度. * SecurityCode类中提供的验证码分三个难度,易(全数字).中(数字+小写英文).难(数字+大小写英文). * 难度使用枚举SecurityCodeLevle表示,避

GOOGLE kaptcha 验证码生成插件 servlet/jsp项目中使用步骤

步骤一: 在项目中添加kaptchar的jar包,下载地址:http://code.google.com/p/kaptcha/(建议使用迅雷下载) 步骤二: 配置web.xml,详细配置如下(这里不是所有的配置,这里的参数还有很多可以酌情精简): <!-- 配置验证码插件servlet类 --> <servlet> <servlet-name>kaptcha</servlet-name> <servlet-class> com.google.co

Android开发中验证码的生成

近期在做电商金融类的项目,验证码的生成方法不可缺少.先学习了一种.经过測试好用.从别处学习的代码,稍修改了一下可选择是否支持识别大写和小写.直接上代码. import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.wid

利用谷歌 kaptcha 进行验证码生成

1 package main.com.smart.controller; 2 3 import com.google.code.kaptcha.Producer; 4 import main.com.smart.utils.CaptchaProducer; 5 import main.com.smart.utils.RedisClient; 6 import org.apache.log4j.Logger; 7 import org.apache.log4j.spi.LoggerFactory;

ASP.NET在实际开发中验证码的用法

在网上有看到很多关于验证码的代码,很多都只是生成一张验证码图片,然而在实际登陆验证模块,验证码要怎么添加进去或者说怎么运用.和实际项目开发中要怎么使用验证码,我自己总结了几点. 一.在实际开发登陆模块的验证码,程序员是将验证码的文本值(字符串)存在Session中的,然后在登陆验证的时候,通过Session取值进行判断的,这样效率会高很多. 二.然而在写验证码的时候要想通过Session存值,就必须实现System.Web.SessionState.IRequiresSessionState这个