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 = ; i < ; i++)
{
Polyline p = new Polyline();
for (int ix = ; ix < r.Next(, ); ix++)
{
p.Points.Add(new Point(r.NextDouble() * width,
r.NextDouble() * height));
}
byte[] Buffer = new byte[];
r.NextBytes(Buffer);
SolidColorBrush SC = new SolidColorBrush(Color.FromArgb(,
Buffer[], Buffer[], Buffer[]));
p.Stroke = SC;
p.StrokeThickness = 0.5;
cv1.Children.Add(p);
}
Gx.Children.Add(cv1); //用于生成数字
Canvas cv2 = new Canvas();
int y = ;
int lw = ;
double w = (width - lw) / text.Length;
int h = (int)height;
foreach (char x in text)
{
byte[] Buffer = new byte[];
r.NextBytes(Buffer); //用随机数填充字节数组的元素
SolidColorBrush SC = new SolidColorBrush(Color.FromArgb(,
Buffer[], Buffer[], Buffer[]));
TextBlock t = new TextBlock();
t.TextAlignment = TextAlignment.Center;
t.FontSize = r.Next(h - , h); //返回一个指定范围内的数 设定字体大小<像素高度-3>
t.Foreground = SC; //设置前景色
t.Text = x.ToString();
t.Projection = new PlaneProjection() //对象的透视转换(类似三维效果)
{
RotationX = r.Next(-, ),
RotationY = r.Next(-, ),
RotationZ = r.Next(-, )
};
cv2.Children.Add(t);
Canvas.SetLeft(t, lw / + y * w);
Canvas.SetTop(t, );
y++;
} Gx.Children.Add(cv2); //基于内存管理图像的类
WriteableBitmap W = new WriteableBitmap(Gx, new TransformGroup());
W.Render(Gx, new TransformGroup()); img.Source = W;
}
}

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

  1. java web中验证码生成的demo

    首先创建一个CaptailCode类 package com.xiaoqiang.code; import java.awt.*; import java.awt.font.FontRenderCon ...

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

      前端页面层:    编译老是不通过,报如下如所示错误:     -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类.       结果整理: 1.尽管在 edmx 模 ...

  3. MVC中验证码的生成

    在项目中验证码的生成通常是需要页面无刷新的,所以验证码图片实际是跟在某个input后面的img,通过控制该img来控制验证码显示的位置,例如: <div> <input id=&qu ...

  4. Android开发中验证码的生成

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

  5. php 图片验证码生成 前后台验证

    自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一下,希望大家在用到相关问题的时候可以有一定的参考性. 首先,php验证码生成. 代码如下: 1.生成图像代 ...

  6. ASP.NET验证码生成与识别

    一般验证码页面只输出一个图片而不进行其他业务处理,所以验证码一般放在一般处理程序(httpHandler)页面中,而如果将验证码生成代码放到一般处理程序中,要将生成验证码保存在Session中,这里我 ...

  7. ajax原理,验证码生成原理

    什么是ajax AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML 指一种创建交互式网页应用的网页开发技术.   不是指一种单一的 ...

  8. .net验证码生成及使用

    验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...

  9. 验证码生成-->漂亮啊

    验证码不用输出太多的HTML代码,直接创建一个一般处理程序,直接上代码 public class VCode : IHttpHandler { HttpContext context = null; ...

随机推荐

  1. Docker构建FastDFS镜像

    https://blog.csdn.net/qq_26440803/article/details/83066132 Dockerfile 所需依赖: fastdfs    libfastcommon ...

  2. zabbix之 orabbix模板监控oracle

    一.Orabbix简介 Orabbix是设计用来为zabbix监控Oracle的数据库的插件,它提供多层次的监控,包括可用性和服务器性能的指标.它提供了从众多Oracle实例采集的有效机制,进而提供此 ...

  3. 解决Tomcat的IllegalArgumentException: Control character in cookie value or attribute错误

    接口中带有中文,tomcat8 17-Apr-2019 13:21:23.734 严重 [http-nio-8082-exec-2] org.apache.coyote.http11.Abstract ...

  4. 【转】Linux环境进程间通信(五) 共享内存(上)

    转自:https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以 ...

  5. C# Json 和对象的相互转换

    Json 和对象的相互转换 /// <summary> /// Json 和对象的相互转换 ——需引用using Newtonsoft.Json; 即:Jsonnet.net..... / ...

  6. sed指令的奇淫技巧

    查看某一个文件第5行和第10行sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行. 查看某文件中指定第几行内容可以用sed -n '100{p;q}' filen ...

  7. Java8-Optional与null

    对null进行处理 程序中经常需要对null情况进行处理,比如Course类中有一个List stuList属性,Student有一个name属性. 现在想要查看某个student的name属性的长度 ...

  8. Spring中的接口BeanFactory和FactoryBean的学习

    BeanFactory: 相当于对象工厂,可以获取对象的实例以及相应的属性.BeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,也就是Spring IOC所遵 ...

  9. windows下的端口转发命令netsh

    使用下面的命令查看语法 netsh interface portproxy add v4tov4 /? add v4tov4 [listenport=]<integer>|<serv ...

  10. 初次使用BAT,请检查Chrome浏览器和ChromeDriver兼容性

    ChromeDriver可以理解为Chrome驱动,它是架在BAT程序和Chrome之间的桥梁.但是ChromeDriver的问题是,每个版本的兼容范围很窄,通常只能兼容3个Chrome版本. 因此, ...